JScrewIt (різні рішення: 16117, 14747 та 5903 символи)
Двигуни Javascript не ідентичні; незначні відмінності в реалізації можуть призвести до того, що код, який працює в браузері, не працює в іншому. У випадку з ліпограмматичним кодом на зразок JSFuck - який багато в чому покладається на хаки, щоб кодувати речі якомога коротше - несумісності ще більше.
Наприклад, код, згенерований програмою JSFuck alert("Hello World!")
, не працює в Internet Explorer. Якщо це прийнятне обмеження, ми все одно можемо зменшити розмір до 16117 22174 символів (я не можу включити весь код безпосередньо, оскільки розмір відповіді обмежений 30000 символами):
http://jsfiddle.net/ep2jqsj4/1/
Код, який працює і в Internet Explorer, але це не так, як у деяких старих браузерах, кодує 14747 символів :
http://jsfiddle.net/bbxfqboq/
Нарешті, якщо нормально мати код, який працює в поточному Firefox [оновлення] та Safari [завершення оновлення] , ми можемо зробити це з 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, і я не можу сказати, чи все ще активно розвивається.
Було б цікаво дізнатися, чи є таких кодерів більше. Якби в одному інструменті можна було приєднати методи, які використовуються різними кодерами, можна було б отримати ще більш короткі рішення.
$
і=
як добре, будь ласка? Інакше я не думаю, що ми можемо найкраще отримати генератор.