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でのみ機能し、まだ活発に開発されているかどうかはわかりません。
そのようなエンコーダーがもっとあるかどうかを知ることは興味深いでしょう。1つのツールで異なるエンコーダーが使用するメソッドを結合できれば、さらに短いソリューションを作成することができます。
$
と=
、同様にしてください?そうでなければ、私たちは発電機を最高にできるとは思いません。