ハノイの塔6 (クラスBouを使って) 解答

解答です

ファイル名 Hanoi6.java

import java.util.*;
public class Hanoi6 { 
   int maisuu  =  3;
   Bou[] bou = {
       new Bou('A',maisuu),
       new Bou('B'),
       new Bou('C')
   };
   public void idou(int n,Bou src,Bou dst){
      Bou tmp;
      if      (src==bou[0]){
           if (dst==bou[1]) tmp=bou[2]; else tmp=bou[1];
      }
      else if (src==bou[1]){
           if (dst==bou[0]) tmp=bou[2]; else tmp=bou[0];
      }
      else                 {
           if (dst==bou[1]) tmp=bou[0]; else tmp=bou[1];
      }
      if (n > 0){
         idou(n-1,src,tmp);
         dst.pile.add(src.pile.removeLast());

         for(Bou b: bou) System.out.println ( b );
         System.out.println ();
         idou(n-1,tmp,dst);
      }
   } 
   public Hanoi6(){
         for(Bou b: bou) System.out.println ( b );
         System.out.println ();
         idou(maisuu,bou[0],bou[2]);
   }
   public static void main( String[] args ) {
      Hanoi6 hanoi = new Hanoi6();
   } 

}

実行結果はこうなります

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
もくじ

聖愛中学高等学校
http://www.seiai.ed.jp/
Last Modified