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

15,322 views

Published on

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

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
15,322
On SlideShare
0
From Embeds
0
Number of Embeds
9,419
Actions
Shares
0
Downloads
12
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

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

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

×