ライフゲームの話とともに,ラングトンのアリも紹介されていたので実装してみた。この先生蟻コロニー最適化も本の中で紹介してるしアリ好きだな(笑)。というか本の中でアリを飼っている話が出てきていた。
1.ラングトンのアリ
詳細はWikipediaがあるので引用。平面が格子状に構成され、各マスが白または黒で塗られる。ここで、1つのマスを「アリ」とする。アリは各ステップで上下左右のいずれかのマスに移動することができる。アリは以下の規則に従って移動する。ルールが非常に単純(プログラム書くのも簡単)。なのに結構複雑な動きをする。まさに複雑系(よく理解していないケド)。
この単純な規則で驚くほど複雑な動作をする。
- 黒いマスにアリがいた場合、90°右に方向転換し、そのマスの色を反転させ、1マス前進する。
- 白いマスにアリがいた場合、90°左に方向転換し、そのマスの色を反転させ、1マス前進する。
実際の動画はこんな感じ。
ラングトンのアリやってみた。黒いマスなら色を変えて右へ,そうでなければ色を変えて左へ進む。チューリング完全なら好きな絵を描かせられるかもしれないけどどうなんだろう。 pic.twitter.com/45yYSGxoub
— TonyMooori (@TonyMooori) 2016, 1月 7
ツイートにも書いたけど,これで自由に絵がかけたら面白いんだけれどなぁ。Wikipediaには二次元チューリングマシンって書いてあるけれど,チューリング完全ってことで良いのだろうか。もし仮にそうならば,ある程度絵がかけるとは思うけど……まぁ良いや。追記
巻き戻す方向にルールを決めてやればいいだけの話でした。
2.プログラム
こちらのサイトを参考にしました。
ライフゲーム - 人工知能に関する断創録
これだとfor i in range(self.speed):のところでエラーを吐いてしまうのですが、どうすればいいのでしょうか
返信削除