Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2008-01-22

お題(126): ライフゲーム

| 19:21 | お題(126): ライフゲーム - わだばLisperになる を含むブックマーク はてなブックマーク - お題(126): ライフゲーム - わだばLisperになる

一人でArc祭りをしていたため、どう書くorgのお題をスルーしておりました。

もちろん、ぱっと見で簡単なら、スルーしないんですが、ライフゲームってのがAIっぽくて、いやに難しそうだったので、まあ今回もスルーで良いかなと思っていたんですが、Wikipediaの解説を読んだら、ライフゲームが成立するルールは想像していたより簡単だったので、挑戦することにしました。

以前から升目を見る度に、*LISPが使えるんじゃないかと思ってはいたのですが、今回初めて*LISP(シミュレータ)で書いてみました。

*LISPは、Connection Machine用に開発されたこともあり、並列処理のための構文が沢山あります。

画像処理等も、1ピクセルを1プロセッサに割り振って、一回で処理したりするらしいです。

しかし、附属のチュートリアルを読んでも、全然理解できず、一発で並列処理させる構文も見付けられなかったので、無念ながら普通にループで書きました。

自分のイメージとしては、

(defun get-next!! (〜)
  "セルが次に生きているかを判定する関数"
  〜)

(get-next!! *cell*)
とか
(map!! (lambda (x) (get-env!! x) *cell*) ...etc

みたいな感じで、グリッドを丸ごと一発で処理できる筈だと思ってはいるんですが…。(!!は、グリッド全体を一気に処理する関数に付く目印)

*LISPのインストールについては、割と手間が掛って面倒臭く、解説も長くなりそうなので別エントリに書いてみたいと思います。