A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
ハノイの塔を作るというのは手順を書き出すと言うことでしょうか? 既に立派な回答がありますが、
円盤を2枚動かす手順を書き出すfunctionをつくり、
3枚動かす手順を書き出すfunctionをつくり
4枚動かす手順を書き出すfundtionをつくり.......
というような感じですかね。
余計なお世話ですが、
大体何枚くらいの、円盤を想定していらっしゃるのでしょうか? 64枚分を目指していらっしゃるとか?
No.1
- 回答日時:
作ったことはないのですが、
それぞれの部分の周期性に着目するとできると思います。
以下の部分を見て下さい。
以下の部分は、5枚の板をA,B,CのAからBに移動させる手順です。
----------------------------------------------------------------
No.1 DISC:A->B
No.2 DISK:A->C
No.1 DISC:B->C
No.3 DISK:A->B
No.1 DISC:C->A
No.2 DISK:C->B
No.1 DISC:A->B
No.4 DISK:A->C
No.1 DISC:B->C
No.2 DISK:B->A
No.1 DISC:C->A
No.3 DISK:B->C
No.1 DISC:A->B
No.2 DISK:A->C
No.1 DISC:B->C
No.5 DISK:A->B
No.1 DISC:C->A
No.2 DISK:C->B
No.1 DISC:A->B
No.3 DISK:C->A
No.1 DISC:B->C
No.2 DISK:B->A
No.1 DISC:C->A
No.4 DISK:C->B
No.1 DISC:A->B
No.2 DISK:A->C
No.1 DISC:B->C
No.3 DISK:A->B
No.1 DISC:C->A
No.2 DISK:C->B
No.1 DISC:A->B
31 手
----------------------------------------------------------------
コレを見ると、奇数板はA→B→C回り偶数板はA→C→B回り(奇数枚数の板をAからBに移すとき)で
1:1つ置き
2:3つ置き
3:7つ置き
4:15置き
になっていることがわかります。
つまり、あるn番目の板を動かすには、それ以前のn-1の板を先に動かす必要があるので
・前もって動かす手順
・自分を動かす手順
・残りを動かす手順(つまり前もって動かす手順と同じ)
になることがわかります。
なので、
n番目の板:{(n-1)の周期的出現数}×2+1=nの周期的出現数
になること
及び、
初めて出現する位置:前の(n-1)板の手順が終わった時=(n-1)の周期的出現数
になっていることがわかります。
また、
n枚の板を移動完了させるのに必要な手数は
{(n-1)の周期的出現数}×2+1
になることがわかります。
以上のことから、
n枚の塔を移動させる時の総手数と、それぞれの板を移動させる向きとタイミングがわかりますから、プログラミングできると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- アジア ベトナムのハノイに行きたいです。9月は雨季ですか?タイのように雨季でも一瞬ドバーッと降ってすぐ止む程 2 2023/08/19 16:19
- アジア ハイフォン市街でハロン湾ツアーの申し込み 2 2023/08/01 16:57
- アジア ベトナムからの帰国時に必要なもの 2 2022/09/07 18:21
- アジア 日本からインドに行こうと思っています。ハノイかホーチミンで乗り継ぎの航空券が多いですが、 「ご自身で 7 2023/07/08 16:31
- アジア ベトナム中部のフエ〜ハノイ、ニンビン等の間が旅行ガイドでも長距離バスでもすっぽりと抜けているのは何故 2 2023/08/26 11:12
- アジア トランジット 2 2023/03/02 19:57
- ドラマ ドラマ。関西住みです。今、夕方に白い巨塔の再放送をやってますが、今じゃ考えられないくらい、喫煙シーン 6 2023/07/26 14:33
- Visual Basic(VBA) VBでExcelの表形式の様なデザインを作りDBと連携させる。 4 2023/02/28 11:39
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- ルーター・ネットワーク機器 Linkstation(NAS)がスリープから復帰しない 4 2023/01/10 16:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
texに関する初歩的な質問
-
Visial C++におけるプログラミング
-
C#の単体テストでローカル変数...
-
ホームページ・ビルダーで「e...
-
Excel-VBA コンテンツの作成日時
-
Verilogの参考書のお勧めを教え...
-
window.onload = alertでエラー
-
納品 vs ご納品 どちらが正し...
-
Zと2とか紛らわしいのがあるか...
-
「スポット受注」はどういう意...
-
納入日と納品日について
-
見積書と発注書を兼用できるの...
-
formで送信したPOSTデータの削...
-
長さ0の文字列を格納できません...
-
食品担当になり、2ヶ月が経つの...
-
営業職をやってます。先月発注...
-
プログラマーの土日のみのアル...
-
スーパーなどで発注をする時に...
-
Windows server 2022 CALとSQL ...
-
SEが仕様書を書けない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
P2P地震速報のEEW APIの仕様書...
-
texに関する初歩的な質問
-
C#単体テストで同クラス内の呼...
-
テスト仕様書作成って初心者(...
-
EXCEL_VBAでOracleにADO接続し...
-
C#の単体テストでローカル変数...
-
ホームページ・ビルダーで「e...
-
VBからBeckyを使用したメール送...
-
HWNDへの変換
-
Visial C++におけるプログラミング
-
JUnit結果出力をファイルに書き...
-
Verilogの参考書のお勧めを教え...
-
UNIX:テキストファイルのNULL...
-
仕様書に書かれていないこと
-
VB6 コードでメニュー作成
-
テスト仕様書の著作権について
-
Excel-VBA コンテンツの作成日時
-
文字をなぞるとポップアップが...
-
単体テストについて
-
ハノイ塔の非再帰について
おすすめ情報