JScrewIt (różne rozwiązania: 16117, 14747 i 5903 znaków)
Silniki Javascript nie są identyczne; niewielkie różnice w implementacji mogą spowodować, że kod działający w przeglądarce nie będzie działał w innej. W przypadku kodu lipogrammatycznego, takiego jak JSFuck - który w dużej mierze polega na włamaniach do kodowania rzeczy tak krótko, jak to możliwe - niezgodności są jeszcze większe.
Na przykład kod wygenerowany przez JSFuck dla alert("Hello World!")
nie działa w przeglądarce Internet Explorer. Jeśli jest to dopuszczalne ograniczenie, nadal możemy zmniejszyć rozmiar do 16117 22174 znaków (nie mogę dołączyć całego kodu bezpośrednio, ponieważ rozmiar odpowiedzi jest ograniczony do 30000 znaków):
http://jsfiddle.net/ep2jqsj4/1/
Kod, który działa również w Internet Explorerze, ale nie w niektórych starszych przeglądarkach, wymaga 14747 znaków do zakodowania:
http://jsfiddle.net/bbxfqboq/
Wreszcie, jeśli ok, aby kod działał tylko na bieżącej przeglądarce Firefox [aktualizacja] i Safari [aktualizacja końcowa] , możemy to zrobić przy użyciu 5903 5911 znaków :
http://jsfiddle.net/pkyLy0j8/1/
Wszystkie kodowałem za pomocą JScrewIt . Możesz znaleźć inne kodery podobne do JSFuck wymienione na Esolang: http://esolangs.org/wiki/JSFuck . Wypróbowałem je wszystkie i muszę powiedzieć, że JScrew Wydaje się, że jest najlepszy (i jedyny, który działa we wszystkich przeglądarkach), chociaż nie analizowałem szczegółowo, jak to działa.
Innym interesującym koderem jest 6chars.js , który generuje większe wyjście dla krótkich danych wejściowych, takich jak alert("Hello World!")
, ale gdy dane wejściowe stają się dłuższe, działa lepiej niż inne kodery, ponieważ koduje znaki jako liczby. Liczby są krótsze do zapisania w JSFuck, ale wymagają dodatkowego obciążenia do dekodowania. Niestety, 6chars.js działa tylko w Chrome i nie mogę powiedzieć, czy nadal jest aktywnie rozwijany.
Interesujące byłoby wiedzieć, czy takich koderów jest więcej. Gdyby można połączyć metody stosowane przez różne enkodery w jednym narzędziu, można by stworzyć jeszcze krótsze rozwiązania.
$
i=
proszę? W przeciwnym razie nie sądzę, że możemy najlepiej generatora.