GmcLife Ver1.05 【概要】 セルオートマトン・シミュレータ(俗に言うLifeGame)です。 マシン語埋め込みやDLLを自前でCallしてるとかはありませんが、特殊な計算ロジックにより HSP標準命令のみで構成されているとは思えないほど、高速に計算を進めます。 10世代毎表示NoWaitの条件で、Pen4-3GHzの環境において1分間当たり24000世代前後の計算を こなします。(H/W構成他の条件により大きく変わるかもしれません) 【仕様】 マップ:縦横300セル固定、最外周が壁の有限境界条件。 世代間の計算条件:1世代更新、ムーア型(8近傍)、2値(生きセルの有無)。 拡大表示、編集/保存/読込機能あり。 セルのほか、壁をマップ内に配置することも可能。 ルールはオーソドックスな 23/3 Conway's Life の他、23/36 HighLife、134678/357 Amoebaを 用意しています。 有限境界であることにより毎世代で全セルについて平等に計算できるため、全体が生きセルで 埋まっていても速度はほとんど変わりません。誕生条件として近傍生きセル数=0を指定すること も可能です。 【表示/操作】 ・全体マップ(Window左上) Viewがx10のとき、拡大表示するエリアを左クリックで指定します。 世代カウンタは、全体マップ左上に表示されています。(GC:〜) ・拡大マップ(Window右側) 全体マップの全部または一部が拡大表示されます。 左クリックで生きセル、左クリック+Shiftキーで壁セルを置くことができます。 また、右クリックで生きセルおよび壁セルを消去します。 ・マップ操作機能(タイトル「map」) Clear シミュレーション処理を停止し、マップ内にある生きセルと壁セルを消去します。 (外壁は消えません) Restore シミュレーション処理を停止し、保管されている初期配置に戻します。 (初期配置の保管はGC:0から世代が進むときに行われます。) Load ファイルからマップを読み込みます。世代カウンタがリセットされ、シミュレーション 処理を停止します。 Save ファイルにマップを書き出します。シミュレーション処理中でも書き出し可能です。世代 カウンタはリセットされません。 ・実行操作機能(タイトル「execution」) NoWait ステップ間の待ち時間を0に設定し、シミュレーション処理を開始または継続します。 100mS 待ち時間を0.1秒(100m秒)に設定して、シミュレーション処理を開始または継続します。 Pause/Next シミュレーション処理を一時停止します。シミュレーション処理が停止している場合は 次ステップまで世代を進めます。 ・補助操作機能(タイトル「assist」) View x2,x10 拡大表示欄の倍率を切り替えます。ボタン隣(右側)に、設定された倍率が表示されます。 1,2,5,10/St 1ステップで進む世代数を切り替えます。(1ステップ毎に表示が更新されます。) ボタン隣(右側)に、設定されたステップあたり世代数が表示されます。 GC Reset 世代カウントをリセットし、シミュレーション処理を停止します。 ・ルール操作機能(タイトル「rule」) Update ルール入力欄の内容をルールリストで選択されている行に反映します。ルール入力欄の 内容とルールリスト選択行の内容が異なる場合、ボタン隣(右側)にインジケータ「*」が 表示されます。 AddNew ルール入力欄の現在の内容をルールリストの末尾に追加し、選択行とします。 Delete ルールリストで選択されている行を消去します。ルールリストに1行もなくなった場合は、 初期ルール情報が再設定されます。 【ルール指定】 ルールはルールリストから選択するか、ルール入力欄に直接指定することができます。 ルール指定は、次世代に進んだときに生きセルとなる条件を、周囲8近傍の生きセル個数合計 (0〜8)の列挙によって示します。表記は、生残り条件/誕生条件 のようにします。 例として23/3を指定した場合、生きセルについては周囲8近傍の生きセル個数が2か3個のとき のみ次世代へ生残ることができ、生きセルのない場所については周囲8近傍の生きセル個数が 2個のときのみ次世代で生きセルが誕生するということになります。 半角空白以降はコメントとして使用できます。 適用されるルールは、ルール入力欄の下にある条件テーブルで確認できます。上段Sが生残り、 下段Bが誕生を示し、次世代で生きセルになる条件の欄はピンクで示されます。 ※ルール指定の前や途中に半角空白を入れると以降はコメント扱いとなって無視されます。 ※ルールリストは、起動時の作業フォルダに作成されるテキストファイル「gcmlife.rul」に 記録されます。(ファイルはUpdate、AddNew、Deleteのボタン操作時に更新されます。) 【動作環境】 WindowsXPprofessional,M-Pen-1.5GHz,Mem768MB,HSP2.61 WindowsXPprofessional,Pen4-3GHz,Mem2GB,HSP2.61 以上の環境にて動作確認しております。(CPUはPen3-1GHz以上を推奨します。) 起動中はかなりCPUパワーを消費します。他のアプリケーションは動作させないでください。 【制限・免責事項】 本ソフトは、どのような環境でも動作することが保証されるものではありません。 本ソフトを使用したことあるいは使用しなかったことで生じた、いかなる損害にも著作者は責任 を負いません。 改変、配布、販売、リバースエンジニアリングは、いずれについても著作者の許可なく行なう ことを禁止します。 製作/著作 (C) 2003,2004 あんすこえむ 【蛇足事項】 LifeGameは、今ではコンピュータプログラムの初歩として紹介されるほどポピュラーなもので、 解説サイトも結構あります。というわけで、ここでは細かく説明しません。 今回は、高速計算を実現する面白いロジックを思いついたのでLifeGameに応用してみました。 LifeGameでなくてもいいのですが、ショート制限でどんなふうに作れるかやってみたかったし、 速度比較できる適当な題材がそれくらいしかなかったというのもあります。 パターン貼付け機能なし、マップも特に広いわけではないので、取り柄は生きセル個数に左右 されない高速計算ということくらいですが、楽しんでいただけたら幸いです。