Java サンプル - ハノイの塔アルゴリズム
ハノイの塔(ハノイとう)問題は、インドの古い伝説に由来する知恵のおもちゃです。ブラフマーが世界を創造したとき、三本のダイヤモンドの柱を作り、一本の柱に下から上へ大きさの順に64枚の黄金の円盤を重ねました。ブラフマーはバラモンに、円盤を下から順に大きさの順で別の柱に並べ直すよう命じました。また、小さな円盤の上に大きな円盤を置いてはならず、三本の柱の間で一度に一枚の円盤しか動かせないという規則を定めました。
その後、この伝説はハノイの塔ゲームへと発展しました。遊び方は次のとおりです:
- 1. A、B、Cの3本の棒があります。Aの棒にいくつかの円盤があります。
- 2. 一度に一枚の円盤を移動します。小さい円盤は大きい円盤の上にのみ重ねられます。
- 3. すべての円盤をAの棒からCの棒へすべて移動します。
以下のサンプルは、ハノイの塔アルゴリズムの実装を示しています。
MainClass.java ファイル
public class MainClass {
public static void main(String[] args) {
int nDisks = 3;
doTowers(nDisks, 'A', 'B', 'C');
}
public static void doTowers(int topN, char from, char inter, char to) {
if (topN == 1){
System.out.println("Disk 1 from "
+ from + " to " + to);
}else {
doTowers(topN - 1, from, to, inter);
System.out.println("Disk "
+ topN + " from " + from + " to " + to);
doTowers(topN - 1, inter, from, to);
}
}
}
上記のコードを実行した出力結果は次のとおりです:
Disk 1 from A to C Disk 2 from A to B Disk 1 from C to B Disk 3 from A to C Disk 1 from B to A Disk 2 from B to C Disk 1 from A to Cその他の拡張
Java サンプル