home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Distributions / ucb / spencer_2bsd.tar.gz / 2bsd.tar / src / pascal / tests / hanoi.c < prev    next >
C/C++ Source or Header  |  1980-02-17  |  544b  |  32 lines

  1. # define PRINT 0
  2. # define DISK 3
  3. # define other(i,j) (6-(i+j))
  4. int num[4];
  5. long cnt;
  6. main(argc,argv)
  7.   char **argv; {
  8.     int disk;
  9.     disk  = DISK;
  10.     if(argc > 1)disk = atoi(argv[1]);
  11.     num[1] = disk;
  12.     if(PRINT)printf("Start %d on A\n",disk);
  13.     mov(disk,1,3);
  14.     printf("For %d, %ld moves\n",disk,cnt);
  15.     }
  16. mov(n,f,t){
  17.     int o;
  18.     if(n == 1){
  19.         num[f]--;
  20.         num[t]++;
  21.         if(PRINT)printf("Move from %d to %d, result: A:%d B:%d C%d\n",
  22.             f,t,num[1],num[2],num[3]);
  23.         cnt++;
  24.         return;
  25.         }
  26.     o = other(f,t);
  27.     mov(n-1,f,o);
  28.     mov(1,f,t);
  29.     mov(n-1,o,t);
  30.     return;
  31.     }
  32.