スポンサーリンク

たった565バイトでテトリスが動くんです。

すでにご存じの方も多いと思いますが、今日はじめて知って驚きのあまり勢いで載せてしまいました。

もう知っている人には耳にたこができるほど有名なお話だと思いますが、何気なく情報収集をしていて今しがた初めて知り、戦慄を覚えました。

文字数にして551文字。79文字*7行のプログラミングで、テトリスが動きます。

わずか565バイトテトリスのプログラミング解説

 上記サイト様の方で詳しいコードの説明もされていたのですが、とにかくほんの少しも無駄がない。本当にすごいコーディングだと思います。

昔話になりますが、かつてのパソコン黎明期には16KB、32KB程度のRAMでBASICを使いプログラミングをしていました。その頃を思い出すと、今は隔世の感があります。

でも、時代は変わってもスキルの高いプログラマーは昔と変わらず制限がきつければコードを絞って目的の機能を作り上げる。そういう(エコ?)プログラマーもまだまだいるんだなーと思うと無性にうれしくなりました。

ちなみに肝心のテトリスは下記のコードをメモ帳に貼り付けて、htmlの拡張子で保存すればブラウザで遊べます。方向キーとenterキーで遊べますので、暇つぶしにどうぞ。

<body onKeyDown=K=event.keyCode><script>X=[Z=[B=A=12]];h=e=K=t=P=0;function Y()
{C=[d=K-38];c=0;for(i=4;i--*K;K-13?c+=!Z[h+p+d]:c-=!Z[h+(C[i]=p*A-Math.round(p/
A)*145)])p=B[i];!t|c+4?c-4?0:h+=d:B=C;for(f=K=i=0;i<4;f+=Z[A+p])X[p=h+B[i++]]=1
if(e=!e){if(f|B){for(l=228;i--;)Z[h+B[i]]=k=1;for(B=[[-7,-20,6,17,-9,3,6][t=++t
%7]-4,0,1,t-6?-A:-1];l--;h=5)if(l%A)l-=l%A*!Z[l];else for(P+=k++,j=l+=A;--j>A;)
Z[j]=Z[j-A]}h+=A}for(i=S="";i<240;X[i]=Z[i]|=++i%A<2|i>228)i%A?0:S+="<br>",S+=X
[i]?"■":"_";document.body.innerHTML=S+P;Z[5]||setTimeout(Y,99-P)}Y()</script>

コメント

  1. 匿名 より:

    HTML1300: ナビゲーションが発生しました。
    a.html (1,1)

    HTML1410: 引用符で囲まれていない属性値が無効です。引用符で囲まれていない属性値に (“)、(‘)、()、(=)、または (`) を含めることはできません。
    a.html (1,18)

    HTML1527: DOCTYPE を指定する必要があります。有効な HTML5 doctype である “!DOCTYPE html>” の追加を検討してください。
    a.html (1,1)

    SCRIPT1002: SCRIPT1002: Syntax error
    a.html (2,27)

  2. neo より:

    匿名様、サイト訪問とコメントどうもありがとうございました。
    お返事が遅くなり申し訳ありません。
    試してみましたが、今のブラウザ(Chrome)では動かないようですね。また、時間のある時に研究してみたいです。

  3. neo より:

    サイトのhtmlを修正して動くようになりました。