端的に言うと、あのネタをやります。 |
コード |
var //今回はvarが最後まで続く変なコードです a=[], //配列です f=0, //何回Double()したか /*↓aはもちろんグローバル変数。*/ Double=function(){ a=[a,a] }, /*↓再帰使いたかったけどY Combinatorわからん*/ Main=function(n){ for(var i=0;i<n;i++) Double() f+=n }, /*↓fはDoubleした回数。2^fは構造的に一番下(?)のaの要素の総数*/ Now=function(){ alert(f+'\n'+Math.pow(2,f)) }, /*↓タバコです。多分*/ ABomb=function(){ alert((''+a).length) } |
Main(100)やMain(1000)の後にABombを実行するとやばいです。ブラクラってレベルではなく、 それは麻薬で原子爆弾で、こんな特別な関数を実行できるなんて、私はきっと特別な存在なのだろうと感じました。 今まで見たことも無いOSからの警告、「仮想メモリが…」 |
(''+a)によってaを文字列に変換するのがひどく大変なようです。が、 a[0][0][0]…[0]とかもちゃんと定義できてる、ということみたいです。 |
この実験でわかることは、(多分)非常に大きな情報をJSで扱うなら断然配列だってことです。 そして、数行でメモリを無限に喰い続けるプログラムが作れる、ということも。 |
top 戻る |