Deprecated: Assigning the return value of new by reference is deprecated in /home/users/2/floppy.jp-999953/web/kagakusukimono/class/View.php on line 25

Deprecated: Assigning the return value of new by reference is deprecated in /home/users/2/floppy.jp-999953/web/kagakusukimono/class/View.php on line 30

Warning: Cannot modify header information - headers already sent by (output started at /home/users/2/floppy.jp-999953/web/kagakusukimono/class/View.php:25) in /home/users/2/floppy.jp-999953/web/kagakusukimono/class/View.php on line 81
科学好き者の日々::ハノイの塔

ハノイの塔

ハノイの塔.jpg

パズル「ハノイの塔」の工作をしました。紙で切り抜いてつくるものがあるのですね。
ハノイの塔は、大きさの違う円盤を右の柱から違う柱にすべて移動させる。もうひとつの柱を経由してもいい。但し小さい円盤の上に大きい円盤をのせてはいけないというものですね。一度に1枚しか動かせないというルールもありました。

高崎市少年科学館や、千葉市科学館にも展示があります。

上の写真は円盤の数が4枚です。
全てを移動させる手数は円盤の数をn枚とすると 2-1で表されるので15手ということになります。
伝説では神が64枚の円盤を用意して、僧たちがこれを移動させていて、全ての円盤を移動させ終わると世界は終わるとのことです。
一枚移動させるのに1秒かかるとすると、64枚の円盤では、264-1は1844京6744兆737億955万1615秒で約5,845億年となるので確かに世界は終わっているように思えます。宇宙の年齢がたった137億年ですからね。

これをコンピュータで解くというのが、マイコン初期のころのマイコン雑誌に良く載っていました。
再帰呼び出しの例として、以下のように簡単なプログラムでかくことができるということです。
nは円盤の数、A$、B$、C$は柱の位置です。

Call Hanoi(5,"A","B","C")
End
Sub Hanoi(n,A$,B$,C$)
  If n>0 then
   Call Hanoi(n-1,A$,C$,B$)
   Print n;"番の円盤を";A$;"から";B$;"へ移動"
   Call Hanoi(n-1,C$,B$,A$)
  End if
End Sub

Calendar
<< May 2024 >>
SunMonTueWedThuFriSat
   1234
567891011
12131415161718
19202122232425
262728293031
search this site.
tags
archives
recent comment
recent trackback
others
admin