ハノイの塔を 実装してみる

2,110 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,110
On SlideShare
0
From Embeds
0
Number of Embeds
40
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

ハノイの塔を 実装してみる

  1. 1. ハノイの ハノイの塔を 実装してみる 実装してみる
  2. 2. 自己紹介 • – プログラマ • – 東京 勉強会 主宰 • • 趣味 – 料理 – 電子工作
  3. 3. アジェンダ • ハノイの塔とは? • プログラミングを学ぶ上での意味 • 実装例の紹介
  4. 4. ハノイの 塔とは?
  5. 5. ハノイの塔とは? • こんなの • 年発売のゲーム – エドゥアール・リュカ • フランスの数学者 • 勝手に伝説を作る – ガンジス河畔で僧侶が ハノイを解いている。 解き終わったら世界は 崩壊し終焉を迎える。
  6. 6. ルール • 1回に1枚ずつしか動かせない • 自分より大きな円盤を 上に乗せることはできない • 最初と同じ状態を ゴールの杭に再現すれば完了
  7. 7. ハノイ…だと? そりゃ世界も終わるよね なぜかはのちほど
  8. 8. プログラミングを 学ぶ上での 意味
  9. 9. なんか聞いたこと…あるよね? • 再帰呼び出しの例題として有名 • そのほかの有名な例題 – 階乗計算 • – フィボナッチ数列 • – ユークリッドの互除法 • 2つの自然数の最大公約数を求める
  10. 10. 再帰呼び出し • • 関数が自分自身を呼び出す – 変数のスコープに注意が必要 • 関数より外なのか、中なのか – 一時変数などはスタックに確保 • あふれると異常終了する • 再帰的アルゴリズムを実装するのに最適
  11. 11. ハノイの塔の解法 • 円盤 個のハノイの塔を解くには – 杭をそれぞれ とする – 個の円盤は に積まれている – ハノイを何らかの方法で に移動 枚目の円盤を に移動 – ハノイを何らかの方法で に移動 「何らかの方法」って… ( ・ω・ )
  12. 12. で考えてみる – ハノイを何らかの方法で に移動 – – なのでなにもしない 枚目の円盤を に移動 – 円盤を から に移動 – ハノイを何らかの方法で に移動 – – なのでなにもしない できたっぽい! ・ω・
  13. 13. 実演
  14. 14. 実装例の 紹介
  15. 15. ソースコードをご覧ください • ポイント解説 – ハノイを解く部分: ~ • 引数の配列 スタックとして使用 は参照渡し • が になるまで自分自身を呼び出す • えっと…もうないや
  16. 16. 余談:終わる世界 • 解くために必要な移動回数 → – n = 1 : 1 (回) 2 : 3 • 1回1秒で移動させると 3 : 7 約 億年かかる 4 : 15 → 64ハノイ? ( 京 兆 億 万 )回
  17. 17. まとめと感想 • ハノイの塔なんて初めて書いた – 意外と勉強になった • とある課題…だったんだけど 不要になったのでネタにした – 書いた • つい手元にある で書いた – でさらっと書けるとカッコいいな
  18. 18. 参考文献 • ハノイの塔 – – 別の解法もあるので参照してみよう » • – 種類以上の言語でハノイの塔を実装している • って! » • 【楽天市場】:木のおもちゃ製作所・銀河工房 – 写真拝借しました。 »
  19. 19. ご清聴ありがとうございました。

×