ライフゲームでプログラミング

  • 11,725 views
Uploaded on

第5回KPF勉強会の発表スライドです。ライフゲームでプログラミングはできるのか!?

第5回KPF勉強会の発表スライドです。ライフゲームでプログラミングはできるのか!?

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
11,725
On Slideshare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
8
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 2010/02/06 KPF005 ライフゲームでプログラミング!? 〜超ビジュアルプログラミング言語?〜 shunsuk http://d.hatena.ne.jp/shunsuk/
  • 2. shunsuk 医者を志す妻を応援する夫の日記 http://d.hatena.ne.jp/shunsk/
  • 3. ライフゲーム Conway's Game of Life
  • 4.  
  • 5. ルール 誕生:死んでいるセルの周囲に 3 つの生きているセルがあれば次の世代では生きる(誕生する)。 維持:生きているセルの周囲に 2 つか 3 つの生きているセルがあれば次の世代でも生き残る。 死亡:上以外の場合には次の世代では死ぬ。
  • 6.  
  • 7. デモ ライフゲーム for iPhone
  • 8. ライフゲームは、 万能チューリングマシンである。 計算機で実行可能な全てのアルゴリズムを作ることができる。
  • 9. 意味がわからない。
  • 10. ライフゲームで、 プログラミングできる ってことで OK ??
  • 11. やってみた。
  • 12. 昨日、 崖の上のポニョ 見ながら。
  • 13. ライフゲームのパターンと、 プログラムの命令とを 対応付ければ OK かな。
  • 14. そこで。
  • 15. Brainf*ck
  • 16. Brainf*ck 命令 8 個 1. 「 > 」ポインタをインクリメントする。 2. 「 < 」ポインタをデクリメントする。 3. 「 + 」ポインタが指す値をインクリメントする。 4. 「 - 」ポインタが指す値をデクリメントする。 5. 「 . 」ポインタが指す値を出力する。 6. 「 , 」 1 バイトを入力してポインタが指す値に代入する。 7. 「 [ 」ポインタが指す値が 0 なら、対応する ] の直後までジャンプする。 8. 「 ] 」ポインタが指す値が 0 でないなら、対応する [ にジャンプする。
  • 17. Brainf*ck Hello, world! +++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-.------------.<++++++++.--------.+++.------.--------.>+.
  • 18. Brainf*ck の 8 個の命令と、 ライフゲームの 3 つのセルを 対応させる。 例 [0][0][0] は「 > 」 [0][0][1] は「 < 」
  • 19. ライフゲームの 1 世代ごとに、 Brainf*ck の 1 命令が現れる。
  • 20. 名づけて。
  • 21. Lifef*ck
  • 22. Brainf*ck のコードから、 ライフゲームのパターンに トランスレート。
  • 23. やりかた。
  • 24. プログラム文字列のの最後から 順に命令を取り出して、 Brainf*ck の 1 命令を埋め込んで ライフゲームのパターンを作る。
  • 25. ( 最後 – 1) の命令を取り出して、 次世代が最後のパターンになる パターンを探し出す。 ( 最後 – 2) の命令を取り出して、 次世代が ( 最後 - 1) のパターンになる パターンを探し出す。 繰り返す。
  • 26. チューリング完全なら、 できるはず。 知らんけど。
  • 27. 一世代前のパターンを探す。
  • 28. 80x80 のセルの場合。 全部チェックしたら、 2^6400 通りチェックせなん。
  • 29. 遺伝的アルゴリズム Genetic Algorithm
  • 30. 遺伝的アルゴリズム Genetic Algorithm 進化的アルゴリズム。データ(解の候補)を遺伝子で表現した「個体」を複数用意し、適応度の高い個体を優先的に選択して交叉(組み換え)・突然変異などの操作を繰り返しながら解を探索する。
  • 31. ライフゲームのパターン を遺伝子として扱う。 これを、進化させる。
  • 32. 結果。
  • 33. デモ Lifef*ck で、 ライフゲームから Brainf*ck に トランスレート
  • 34. デモ Lifef*ck で、 Brainf*ck から ライフゲームにトランスレート (さっきの逆)
  • 35. 適応度 95% の壁。
  • 36. 崖の上の自分。
  • 37. 95% 。
  • 38. 95% 。越えられない壁。
  • 39. 95% 。越えられない壁。チューニング。
  • 40. 95% 。越えられない壁。チューニング。越えられない壁。
  • 41. 95% 。越えられない壁。チューニング。越えられない壁。チューニング。チューニング。
  • 42. 95% 。越えられない壁。チューニング。越えられない壁。チューニング。チューニング。越えられない壁。
  • 43. 95% 。越えられない壁。チューニング。越えられない壁。チューニング。チューニング。越えられない壁。ポニョ。
  • 44. 95% 。越えられない壁。チューニング。越えられない壁。チューニング。チューニング。越えられない壁。ポニョ。そうすけ。
  • 45. 95% 。越えられない壁。チューニング。越えられない壁。チューニング。チューニング。越えられない壁。ポニョ。そうすけ。すきー。
  • 46. 95% 。越えられない壁。チューニング。越えられない壁。チューニング。チューニング。越えられない壁。ポニョ。そうすけ。すきー。 うるせー!!
  • 47. 遺伝的アルゴリズムは、 適応度の高い個体に収束する。 8 〜 9 割の正解率でよい 問題に向いている。
  • 48. 今回、 100% を目指すのは、 無理だった。 自分の力量では。。
  • 49. そもそも、 一世代前のパターンが 必ず存在するのか?
  • 50. というわけで。
  • 51. すみません。 失敗しました。
  • 52. でも。
  • 53. 僕らの夏は始まったばかり。
  • 54. ポニョ。
  • 55. そうすけ。
  • 56. すき。
  • 57. 僕もすき!!
  • 58. ありがとうございました。
  • 59. うまくいったらブログに載せます。 医者を志す妻を応援する夫の日記 http://d.hatena.ne.jp/shunsuk/
  • 60. むしろ。 アドバイスをください!