import java.util.*;
public class Hanoi7 {
long ct = 0;
Bou[] bou = new Bou[3];
public void idou(int n,Bou src,Bou dst,Bou tmp){
if (n > 0){
idou(n-1,src,tmp,dst);
dst.addDisk(src.rmDisk());
//dst.pile.add(src.pile.removeLast());
for(Bou b: bou) System.out.println ( b );
System.out.println ();
idou(n-1,tmp,dst,src);
}
}
public Hanoi7(int maisuu){
bou[0] = new Bou('A',maisuu);
bou[1] = new Bou('B');
bou[2] = new Bou('C');
for(Bou b: bou) System.out.println ( b );
System.out.println ();
idou(maisuu,bou[0],bou[2],bou[1]);
}
public static void main( String[] args ) {
int n = Integer.parseInt(args[0]);
Hanoi7 hanoi = new Hanoi7(n);
System.out.println(hanoi.ct + "回");
}
}
import java.util.*;
public class Bou {
char name;
LinkedList<Integer> pile = new LinkedList<Integer>();
public Bou(char nam,int maisuu) {
name = nam;
while ( maisuu >0 ){
pile.add(maisuu);
maisuu--;
}
}
public Bou(char nam) {
name = nam;
pile.clear();
}
public String toString(){
String x = name + ":";
for ( int p : pile){
x= x + p + " ";
}
return x;
}
public int rmDisk(){
int diskn = pile.removeLast();
return diskn;
}
public void addDisk(int diskn){
pile.add(diskn);
}
}
実行結果はこうなります
A:3 2 1 B: C: A:3 2 B: C:1 A:3 B:2 C:1 A:3 B:2 1 C: A: B:2 1 C:3 A:1 B:2 C:3 A:1 B: C:3 2 A: B: C:3 2 1