更新ブログ

« 学生と企業の交流会 | メイン | 小雪 »

2012年11月10日 (土)

1行プログラム

前回、昔のパソコンはメモリ部品が高価なた

め、いろいろと節約したお話をしましたが、

その最たるものは「1行プログラム」です。

1行でどれだけ複雑なものができるか、という

ことを競ったものです。

主にBASIC(ベーシック)という言語で作られ、

当時は中々面白いものがありました。

ただ、今ではパソコンは一部のマニアではな

くて一般の方も使うようになり、機械も高性

能・大容量になり、そうしたことはほとんど

行われなくなりました。

でも、短いプログラムで人を驚かすようなも

のを作るには、かなりの最適化技術が必要で、

その考え方はいろいろな面に応用できます。

下のプログラム例は、7行と短いものですが、

「テトリス」です。パソコン内のメモ帳プロ

グラムを起動し、このプログラムを貼り付け

て名前を「TETRIS.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

トラックバック

このページのトラックバックURL:
http://app.kazelog.jp/t/trackback/523244/30241921

1行プログラムを参照しているブログ:

コメント

コメントを投稿

コメントは記事の投稿者が承認するまで表示されません。