hirax.net::inside out::2010年01月05日

最新記事(inside out)へ  |   年と月を指定して記事を読む(クリック!)

2009年12月 を読む << 2010年1月 を読む >> 2010年2月 を読む

2010-01-05[n年前へ]

17年前のプログラム・ミステリの解答編 

 PostScriptはプログラミング言語である。あまりにも、当たり前のことだが、それを意識したのは、1993に開催された『第1回国際邪悪なPostScriptコンテスト(1st International Obfuscated PostScript Contest)』でBest Artwork賞を受賞した、PostScriptでRay Tracingを見た時です。このPostScriptコード(PostScript,PDF)は、右上のような”いかにもレイ・トレーシング”画像を描く。この画像を描きだすPostScriptコードは、信じられないかもしれませんが、小さな小さな( 下記の)のプログラミングコードなのです。

%!IOPSC-1993 %%Creator: HAYAKAWA Takashi 
/C/neg/d/mul/R/rlineto/E/exp/H{{cvx def}repeat}def/T/dup/g/gt/r/roll/J/ifelse 8
H/A/copy(z&v4QX&93r9AxYQOZomQalxS2w!!O&vMYa43d6r93rMYvx2dca!D&cjSnjSnjjS3o!v&6A
X&55SAxM1CD7AjYxTTd62rmxCnTdSST0g&12wECST!&!J0g&D1!&xM0!J0g!l&544dC2Ac96ra!m&3A
F&&vGoGSnCT0g&wDmlvGoS8wpn6wpS2wTCpS1Sd7ov7Uk7o4Qkdw!&Mvlx1S7oZES3w!J!J!Q&7185d
Z&lx1CS9d9nE4!k&X&MY7!&1!J!x&jdnjdS3odS!N&mmx1C2wEc!G&150Nx4!n&2o!j&43r!U&0777d
]&2AY2A776ddT4oS3oSnMVC00VV0RRR45E42063rNz&v7UX&UOzF!F!J![&44ETCnVn!a&1CDN!Y&0M
V1c&j2AYdjmMdjjd!o&1r!M){( )T 0 4 3 r put T(/)g{T(9)g{cvn}{cvi}J}{($)g{[}{]}J}J
cvx}forall/moveto/p/floor/w/div/S/add 29 H[{[{]setgray fill}for Y}for showpage
 上記のPSファイルをPDFにしたPDFファイルを開けば、あなたがあなたのコンピュータを使って、PostScriptプログラムを実行させ、その結果をグラフィカルに眺めることができます。あるいは、(内容をテキストファイルとして保存し、拡張子を.psにした)PostScriptファイルをPhotoshopなどのPostScriptコードを解釈できるアプリケーションで開けば、その結果をやはり目に見える形で眺めることになるのです。

 「これがコード(のすべて)です。 PostScriptが好きな人は頑張って解読してください」という、作者の小気味良くも挑戦的なフレーズに刺激され、何度か読解しようとしたことがあります、けれど、いつも時間がただ経つばかりで途中で挫折してしまったように思います。

 今日、「Tiny_RayTracing.ps を読んでみた」を読みました。

 Obfuscated PostScript Contest 1993 の BEST OBFUSCATED ARTWORK で 1 位に選ばれた早川たかし氏の Tiny_RayTracing.ps を読んでみました。
 単純な命令を元の名前に直し、コメントを加えてみました。
 そして、ようやく、上記のPostScriptがどのような動作をしているかを、納得することができたのです。”レイ・トレーシング”と言えば”レイ・トレーシング”だけれども、もしかしたら、”レイ・トレーシング”風といった方が良いかもしれない割り切った実装の仕方・その工程を納得することができました。

 こういったもの、元のPostScriptコード記述や、それを読みとる解説を眺めていると、またしても、アントニオ猪木の「元気ですかーっ! 元気があればーっ!何でもできるーっ!」という言葉が、頭の中でパワープレイされるような心地にさせられます。

十六年前のプログラム・ミステリの解答編