PostScriptでライフゲーム
よくあるプログラムだろうけど、せっかく作ったので載せます。
どうも手続き型言語風な書き方になってしまいます。
%!PS %%BoundingBox: 0 0 190 190 gsave /field [[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0] [0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0] [0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0] [0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0] [0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0] [0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0] [0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]] def /m field 0 get length def /n field length def /l 10 def /nextfield n array def 0 1 n 1 sub { /j exch def nextfield j m array put } for /copyarray { /y exch def /x exch def 0 1 x length 1 sub { /j exch def x j get y j get copy pop } for } def field nextfield copyarray { 0 1 n 1 sub { /j exch def 0 1 m 1 sub { /i exch def i l mul j l mul l l field j get i get 1 eq {rectfill}{rectstroke} ifelse } for } for 1 1 n 2 sub { /j exch def 1 1 m 2 sub { /i exch def field j 1 sub get i 1 sub get field j 1 sub get i get add field j 1 sub get i 1 add get add field j get i 1 sub get add field j get i 1 add get add field j 1 add get i 1 sub get add field j 1 add get i get add field j 1 add get i 1 add get add /num exch def /nextij num 2 eq { field j get i get }{ num 3 eq {1} {0}ifelse }ifelse def nextfield j get i nextij put }for } for nextfield field copyarray showpage } loop grestore