JScrewIt (verschiedene Lösungen: 16117, 14747 und 5903 Zeichen)
Javascript-Engines sind nicht identisch. Geringe Implementierungsunterschiede können dazu führen, dass Code, der in einem Browser funktioniert, in einem anderen nicht funktioniert. Im Falle von lipogrammatischem Code wie JSFuck, der sich hauptsächlich auf Hacks stützt, um Dinge so kurz wie möglich zu codieren, sind die Inkompatibilitäten sogar noch größer.
Beispielsweise kann der von JSFuck für generierte Code alert("Hello World!")
nicht in Internet Explorer ausgeführt werden. Wenn dies eine akzeptable Einschränkung ist, können wir die Größe dennoch auf 16117 bis 22174 Zeichen reduzieren (ich kann den gesamten Code nicht direkt einschließen, da die Antwortgröße auf 30000 Zeichen begrenzt ist):
http://jsfiddle.net/ep2jqsj4/1/
Ein Code, der auch in Internet Explorer funktioniert, in einigen älteren Browsern jedoch nicht, benötigt 14747 Zeichen für die Codierung:
http://jsfiddle.net/bbxfqboq/
Wenn es in Ordnung ist, Code zu haben, der nur unter Firefox [Update] und Safari [Update beenden] ausgeführt wird , können wir dies mit 5903 bis 5911 Zeichen tun :
http://jsfiddle.net/pkyLy0j8/1/
Ich habe alle mit JScrewIt codiert . Andere ähnliche Encoder wie JSFuck finden Sie auf Esolang: http://esolangs.org/wiki/JSFuck . Ich habe alle ausprobiert und ich muss sagen, JScrewIt scheint das beste zu sein (und auch das einzige, das in allen Browsern funktioniert), obwohl ich nicht analysiert habe, wie es im Detail funktioniert.
Ein weiterer interessanter Encoder ist 6chars.js , der eine größere Ausgabe für kurze Eingaben generiert alert("Hello World!")
, aber wenn die Eingabe länger wird, ist die Leistung besser als bei den anderen Encodern, da Zeichen als Zahlen codiert werden. Zahlen sind kürzer zum Schreiben in JSFuck, erfordern aber zusätzlichen Overhead zum Dekodieren. Leider funktioniert 6chars.js nur in Chrome und ich kann nicht sagen, ob es noch aktiv entwickelt wird.
Es wäre interessant zu wissen, ob es mehr solcher Encoder gibt. Wenn man Methoden, die von verschiedenen Encodern verwendet werden, in einem Tool zusammenfassen könnte, wären noch kürzere Lösungen möglich.
$
und=
bitte auch? Ansonsten denke ich nicht, dass wir den Generator am besten können.