daily-events.この広告は、90日以上更新していないブログに表示しています。life)とは...ライフゲームとは2次元のセルオートマトンである。生コマの周りに生コマが2〜3コマあるならば、そのコマは生き続ける。死コマの周りに生コマが3コマあるならば、そのコマは復活する。その他の条件のとき、そのコマは、死亡する。多すぎてもダメ、少なすぎても寂しくて死んでしまうというものである。このようなルールに基づき、シミュレーションを行うのが、ライフゲームである。このように、通常は、死→生(Born)が3、生→生(Survives)が2,3となっています。これをB3/S23と表記します。この標準ルールを含む様々なルールでシミュレーションを行います。ソフトウェア仕様シミュレーションしよう、、の前にソフトウェアの仕様を説明します。このソフトウェアの特徴を列挙します。任意のマップのマス数を指定することができますマスを全て生状態・全て死状態・ランダムから任意に選択することができます手動でパターンを生成することができます。黒→死、緑→生にすることで見た目がキレイになりましたこんな感じ処理高速化を図り、ビットボードを実装しようとしましたが、R言語はデフォルトではビット演算ができないため、断念しました。よって、計算量はおおよそ8(m✕n)です。アルゴリズムを変更し、計算量は3/2(m✕n)程度(変動あり)になりました。いつかはビットボードを実装したいです。ソースコードはGitHubにて公開します。MITライセンスですgithub.comシミュレーションまずは、通常のライフゲームのシミュレーションから。マップはランダムです。初期位置はこのようになっています。固定子や振動子ができ、収束しました。nightB3678/S34678密度が高いところを生存しやすく、密度が低いところは絶滅しやすい特徴をもちます。ランダムに生成されたマップにおいて最も変化を楽しめる規則といえます。Wikipedia初期マップはランダムで与え、シミュレーションするとこのようになりました。今回の場合は、密度がどこも高かったようで、688世代後、振動子のみが死状態となりました。何度もやってみましたが、どうやら50✕50のマップでは、狭すぎるようで、どれも、ほとんど生状態になりました。そこで、マス数を増やし、100✕100でシミュレーションしてみました。すると、このようになりました。317世代程度で見事に大陸ができました。世代数を増やせば、もっとまとまりができるでしょう。HighLifeB36/S23特定の形を自己複製する機能をもつ規則です。Wikipediaこれは特定の形を初期状態として与えてみます。これを初期状態にして、世代を進めます。すると12世代目で、2体に複製されました!進めていくと、36世代で、4体に複製されました。このような特徴を持ちます。この他の形は、複製されません。ReplicatorB1357/S34678どのような形でも自己複製する規則です。周囲とのXORを取ることで複製するという原理です。「A」という文字を与えてみました。8世代でなんと!!「A」が8つに複製されました。このように任意の形の複製が作れます。2x2B3/S23これは、ライフゲームをライフゲームによってシミュレーションしようとするものです。これに関しては詳しくは説明しません。(自分のマシン性能では自作ソフトではシミュレーションできない)以上、シミュレーションでした。ライフゲームはほとんど数学的な証明が成されていません。驚きの結果が出力される可能性もあります。いうわけで、ライフゲームは興味をそそるゲームです。超優秀なソフト「Golly」があります。12th-dayQuestion.水車における比速度とは何か。5th-dayCommentary.この回では、問題はありません。