JScrewIt (soluções diferentes: 16117, 14747 e 5903 caracteres)
Os mecanismos Javascript não são idênticos; pequenas diferenças de implementação podem fazer com que o código que funciona em um navegador não funcione em outro. No caso de códigos lipogramáticos como o JSFuck - que depende amplamente de hacks para codificar as coisas o mais curto possível - as incompatibilidades são ainda maiores.
Por exemplo, o código gerado pelo JSFuck para alert("Hello World!")
não é executado no Internet Explorer. Se essa é uma limitação aceitável, ainda podemos reduzir o tamanho para 16117 22174 caracteres (não posso incluir todo o código diretamente porque o tamanho da resposta é limitado a 30000 caracteres):
http://jsfiddle.net/ep2jqsj4/1/
Um código que funciona no Internet Explorer também, mas não em alguns navegadores antigos, possui 14747 caracteres para codificar:
http://jsfiddle.net/bbxfqboq/
Por fim, se não há problema em ter um código executado apenas no Firefox [update] atual e no Safari [end update] , poderíamos fazê-lo com 5903 5911 caracteres :
http://jsfiddle.net/pkyLy0j8/1/
Codifiquei todos com JScrewIt . Você pode encontrar outros codificadores semelhantes ao JSFuck listados na Esolang: http://esolangs.org/wiki/JSFuck . Eu tentei todos eles e devo dizer que JScrew parece ser o melhor (e também o único que funciona em todos os navegadores), embora ainda não tenha analisado como funciona em detalhes.
Outro codificador interessante é o 6chars.js , que gera uma saída maior para entradas curtas alert("Hello World!")
, mas quando a entrada fica mais longa, ela apresenta um desempenho melhor do que os outros codificadores, porque codifica caracteres como números. Os números são mais curtos para escrever no JSFuck, mas requerem sobrecarga extra para decodificar. Infelizmente, o 6chars.js funciona apenas no Chrome e não sei dizer se ele ainda está sendo desenvolvido ativamente.
Seria interessante saber se existem mais desses codificadores. Se alguém pudesse juntar métodos usados por codificadores diferentes em uma ferramenta, seria possível produzir soluções ainda mais curtas.
$
e=
também, por favor? Caso contrário, acho que não podemos melhorar o gerador.