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 >
Wrap
C/C++ Source or Header
|
1980-02-17
|
544b
|
32 lines
# define PRINT 0
# define DISK 3
# define other(i,j) (6-(i+j))
int num[4];
long cnt;
main(argc,argv)
char **argv; {
int disk;
disk = DISK;
if(argc > 1)disk = atoi(argv[1]);
num[1] = disk;
if(PRINT)printf("Start %d on A\n",disk);
mov(disk,1,3);
printf("For %d, %ld moves\n",disk,cnt);
}
mov(n,f,t){
int o;
if(n == 1){
num[f]--;
num[t]++;
if(PRINT)printf("Move from %d to %d, result: A:%d B:%d C%d\n",
f,t,num[1],num[2],num[3]);
cnt++;
return;
}
o = other(f,t);
mov(n-1,f,o);
mov(1,f,t);
mov(n-1,o,t);
return;
}