======== life.def (v1.0) ======== * M マクロ 70 @G "ライフゲーム" ?. #R "*.LIF" #m :F (s)?{&c >F} (r<0)?. du[,mi[,en[, du-,mi+,en-,e-,n-, #^ #n &?("世代 000") &s #x #> x=lx/2+1, #_ y=ln, #N "LIFE0000.TMP" #m mr$FF, ;テンポラリファイル・オープン (x+1){' '} #m #16 #e (y-1){#k #i} :N #W #^ &d &s (n==e)?{&d &x(30) &g("世代増分(ESCで終了)") (r==-1)?>Z (r==0||r==-2)?e++,?e+=r, &v(0) &s} #< n++, &?("世代 %03d",n) #F '●' #m :A #c (r)?>B a=lx/2, b=ln-2, #W &01 #W >A :B #@ #^ #< #W #^ #< #d #x :C (cd==' ')?#f (lx>=x)?{#m #d (ln==y)?>E >C} c=cd, a=lx-1, b=ln-1, #W &x(a+a) &y(b) (c=='#')?{'●' >D} ;生の数3ならば生 (c=='$')?{#d >D} ;生の数4ならばそのまま ' ' ;それ以外は死 :D #W #d >C :E &02 >N :Z en],mi],du],#C#C &d #] 1: &x(a) &y(b) &o(cd+1) &o(cd+1) &o(cd+1) ;生ならば回りに1を足す b++, &x(a) &y(b) &o(cd+1) &o(cd+1) &o(cd+1) b++, &x(a) &y(b) &o(cd+1) &o(cd+1) &o(cd+1) 2: #^ #< ;作業領域クリア :A (cd==' ')?{#f (cd==13)?{#d (cd==10)?. >A}} ' ' (cd==13)?{#d (cd==10)?.} >A * ======== End of life.def ========