
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に関する初歩的な質問
-
JUnit結果出力をファイルに書き...
-
HWNDへの変換
-
テスト仕様書について
-
Mac上でCGIのテストをしたいです
-
UNIX:テキストファイルのNULL...
-
T-Kernelのtk_rel_wai()
-
ソフトウェアテストに関して、s...
-
VBからBeckyを使用したメール送...
-
納品 vs ご納品 どちらが正し...
-
納入日と納品日について
-
テストについて
-
三菱製PLC:ファイルレジスタ(...
-
Zと2とか紛らわしいのがあるか...
-
Windows server 2022 CALとSQL ...
-
「スポット受注」はどういう意...
-
クラナドについて
-
発注書と見積書の品番が異なっ...
-
PostgreSQL+DataGridView
-
長さ0の文字列を格納できません...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
texに関する初歩的な質問
-
C#単体テストで同クラス内の呼...
-
C#の単体テストでローカル変数...
-
Visial C++におけるプログラミング
-
ホームページ・ビルダーで「e...
-
仕様書に書かれていないこと
-
EXCEL_VBAでOracleにADO接続し...
-
Excel-VBA コンテンツの作成日時
-
P2P地震速報のEEW APIの仕様書...
-
AtomPubでlivedoorブログに記事...
-
メッセージボックスのタイトル設定
-
VBからBeckyを使用したメール送...
-
HWNDへの変換
-
Verilogの参考書のお勧めを教え...
-
UNIX:テキストファイルのNULL...
-
VB.NETで通信
-
外部仕様書の書き方
-
テスト仕様書について
-
ハノイ塔の非再帰について
-
仕様とはなんですかよろしくお...
おすすめ情報