JScrewIt (различные решения: 16117, 14747 и 5903 символа)
Движки JavaScript не идентичны; небольшие различия в реализации могут привести к тому, что код, работающий в браузере, не будет работать в другом. В случае липограмматического кода, такого как JSFuck - который в значительной степени полагается на хаки для кодирования вещей как можно короче - несовместимости еще больше.
Например, код, сгенерированный JSFuck for alert("Hello World!")
, не работает в Internet Explorer. Если это приемлемо ограничение, мы можем упасть размер до 16117 22174 символов (я не могу включить весь код напрямую , потому что размер ответа ограничен до 30000 символов):
http://jsfiddle.net/ep2jqsj4/1/
Код, который работает и в Internet Explorer, но не в некоторых старых браузерах, требует 14747 символов для кодирования:
http://jsfiddle.net/bbxfqboq/
Наконец, если все в порядке с кодом, работающим только с текущими Firefox [update] и Safari [end update] , мы можем сделать это с 5903 5911 символами :
http://jsfiddle.net/pkyLy0j8/1/
Я закодировал все это с помощью JScrewIt . Вы можете найти другие кодировщики, похожие на JSFuck, перечисленные на Esolang: http://esolangs.org/wiki/JSFuck . Я попробовал все из них, и я должен сказать, что JScrewIt кажется лучшим (и также единственным, который работает во всех браузерах), хотя я не проанализировал, как это работает в деталях.
Другой интересный кодировщик - это 6chars.js , который генерирует больший вывод для коротких входных данных alert("Hello World!")
, но, когда ввод становится длиннее, он работает лучше, чем другие кодировщики, потому что он кодирует символы в виде чисел. Числа короче, чтобы написать в JSFuck, но требуют дополнительных издержек для декодирования. К сожалению, 6chars.js работает только в Chrome, и я не могу сказать, что он все еще активно разрабатывается.
Было бы интересно узнать, есть ли еще такие кодеры. Если бы можно было объединить методы, используемые разными кодировщиками, в одном инструменте, было бы возможно создать еще более короткие решения.
$
и=
как хорошо, пожалуйста? В противном случае я не думаю, что мы можем лучше генератора.