パスワードを忘れた? アカウント作成
334911 journal

nimu.akhの日記: 関数電卓でライフゲーム 2

日記 by nimu.akh

CASIO の fx-5800p でライフゲームを作った。1次元配列が1個だけとか、変数に入れれるのは数値のみとか、関数を作れないという環境だったけどなんとかできた。しかし、4x4のフィールドの1ステップに3秒くらいかかるという遅さでせいぜい4x16の表示が限界。なんとかならんかなぁ。

File:LIFEGAME

"NEW GAME"?→A
If A:Then
  Prog "NEWGAME"
IfEnd
X+3→A:(X+2)(Y+1)→Z
{-X-3,-X-2,-X-1,-1,1,X+1,X+2,X+3}→List X
Do
  Prog "PRINTMAP"
  Prog "NEXTGEN"
LpWhile Getkey=0

File:NEWGAME
フィールドの外にあたる部分は0、死んでるセルは-1、生きてるセルは1という決まり。1にセットするのはCOMPモードという手抜き。

?X:?Y
0→DimZ:(X+2)(Y+2)→DimZ
For 1→J To Y
  For 1→I To X
    -1→Z[J(X+2)+I+1]
  Next
Next

File:NEXTGEN

For A→I To Z
  If Z[I]>0:Then
    For 1→j To 8
      I+List X[J]:2Z[Ans]→Z[Ans]
    Next
  IfEnd
Next
For A→I To Z
  Z[I]→N
  If N:Then
    If N=4 Or Abs(N)=8:Then 1:Else -1:IfEnd
    Ans→Z[I]
  IfEnd
Next

File:PRINTMAP

Cls
For 1→J To Y
  For 1→I To X
    If Z[J(X+2)+I+1]>0:Then
      Locate I,J,"O"
    IfEnd
  Next
Next

この議論は、nimu.akh (37694)によって ログインユーザだけとして作成されたが、今となっては 新たにコメントを付けることはできません。
  • by inoua (33235) on 2011年06月14日 0時34分 (#1969772) 日記

    fx-5800Pを2007年に買って自分の使うのプログラムを入れて、それ以来プログラムは触っていなかったので思い出すのに一苦労しました。
    Listを座標計算にあの様に使うんですね。Listは知りませんでした。

    I List X[J]:2Z[Ans]→Z[Ans]

    は、
    I-List X[J]:2Z[Ans]→Z[Ans]
    ですね。"-"が、なかなか分からなかった。

    Locale I,J,"O"

    も、"Locate"になんとかたどり着いた。
    世代表示と全部死滅した場合停止するのを追加しました。
    分からなくて少し触ったので左端に移動するとどこかのループから戻ってこないみたい。

    • I List X[J]:2Z[Ans]→Z[Ans]

      は、 I-List X[J]:2Z[Ans]→Z[Ans] ですね。"-"が、なかなか分からなかった。

      Locale I,J,"O"

      も、"Locate"になんとかたどり着いた。

      今、自分の電卓の中に入っている方を見ると+になってました。(+-どっちでも動きますが)直しておきます。localeもlocateに直しておきます。指摘ありがとうございます。

      親コメント
typodupeerror

物事のやり方は一つではない -- Perlな人

読み込み中...