JScrewIt (diferentes soluciones: 16117, 14747 y 5903 caracteres)
Los motores Javascript no son idénticos; ligeras diferencias de implementación pueden causar que el código que funciona en un navegador no funcione en otro. En el caso de código lipogramático como JSFuck, que se basa en gran medida en hacks para codificar cosas lo más breve posible, las incompatibilidades son aún mayores.
Por ejemplo, el código generado por JSFuck para alert("Hello World!")
no se ejecuta en Internet Explorer. Si esta es una limitación aceptable, aún podemos reducir el tamaño a 16117 22174 caracteres (no puedo incluir el código completo directamente porque el tamaño de la respuesta está limitado a 30000 caracteres):
http://jsfiddle.net/ep2jqsj4/1/
Un código que también funciona en Internet Explorer, pero no en algunos navegadores más antiguos, requiere 14747 caracteres para codificar:
http://jsfiddle.net/bbxfqboq/
Finalmente, si está bien tener un código que se ejecute solo en Firefox [actualización] y Safari [fin de actualización] actuales , podríamos hacerlo con 5903 5911 caracteres :
http://jsfiddle.net/pkyLy0j8/1/
Codifiqué a todos aquellos con JScrewIt . Puede encontrar otros codificadores similares a JSFuck listados en Esolang: http://esolangs.org/wiki/JSFuck . Los probé todos y tengo que decir que JScrew parece ser el mejor (y también el único que funciona en todos los navegadores), aunque no he analizado cómo funciona en detalle.
Otro codificador interesante es 6chars.js , que genera una salida más grande para entradas cortas como alert("Hello World!")
, pero cuando la entrada se alarga, funciona mejor que los otros codificadores porque codifica los caracteres como números. Los números son más cortos para escribir en JSFuck pero requieren una sobrecarga adicional para decodificar. Desafortunadamente, 6chars.js solo funciona en Chrome y no puedo decir si todavía se está desarrollando activamente.
Sería interesante saber si hay más codificadores de este tipo. Si uno pudiera unir métodos utilizados por diferentes codificadores en una herramienta, sería posible producir soluciones aún más cortas.
$
y=
también, por favor? De lo contrario, no creo que podamos mejorar el generador.