やっつけなので汚いです。ライフゲームのコンパイルが通ったのでヨシ、というレベルのものです。
移植元
ベースになっているバージョン: tag:50 のあたり
(2021-06-20 追記) ステップ60 の修正まで反映しました
メモ
今回の実験コーナー。
これまで Dart への移植 のときに set を不要にし、 Java への移植 のときに call を不要にし、 Perl への移植 のときに call_set を不要にしてきました。
今回はこれらを全部適用して、さらに Python への移植 のときにやった、 Ruby っぽい見た目への変更も加えました。
trial ブランチ でやってみました。
vgコードはこんな感じ。
var
を除けばこれはもう Ruby ですね。
def calc_next_gen(current_val, count) # 注目しているセルの次世代の生死 var next_val = 0; case when (current_val == 0) case when (count == 3) next_val = 1; end when (0 == 0) case when (count == 2) next_val = 1; when (count == 3) next_val = 1; end end return next_val; end def main() var w = 5; # 盤面の幅 var h = 5; # 盤面の高さ # 初期状態の設定 vram_set(w, 1, 0, 1); vram_set(w, 2, 1, 1); vram_set(w, 0, 2, 1); vram_set(w, 1, 2, 1); vram_set(w, 2, 2, 1); var gen_limit = 0; var gen = 1; while (gen != gen_limit) make_next_gen(w, h); replace_with_buf(); gen = gen + 1; end end