Alien-TinyCCx
view release on metacpan or search on metacpan
src/tests/tests2/30_hanoi.c view on Meta::CPAN
23456789101112131415161718192021222324252627282930313233343536373839404142434445/* hanoi.c: solves the tower of hanoi problem. (Programming exercise.) */
/* By Terry R. McConnell (12/2/97) */
/* Compile: cc -o hanoi hanoi.c */
/* This program does
no
error checking. But then,
if
it's right,
it's right ... right ? */
/* The original towers of hanoi problem seems to have been originally posed
by one M. Claus in 1883. There is a popular legend that goes along
with
it that
has
been often repeated and paraphrased. It goes something like this:
In the great temple at Benares there are 3 golden spikes. On one of them,
God placed 64 disks increasing in size from bottom to top, at the beginning
of
time
. Since then, and to this day, the priest on duty constantly transfers
disks, one at a
time
, in such a way that
no
larger disk is ever put on top
of a smaller one. When the disks have been transferred entirely to another
spike the Universe will come to an end in a large thunderclap.
This paraphrases the original legend due to DeParville, La Nature, Paris 1884,
Part I, 285-286. For this and further information see: Mathematical
Recreations & Essays, W.W. Rouse Ball, MacMillan, NewYork, 11th Ed. 1967,
303-305.
*
*
*/
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
/* This is the number of
"disks"
on tower A initially. Taken to be 64 in the
* legend. The number of moves required, in general, is 2^N - 1. For N = 64,
* this is 18,446,744,073,709,551,615 */
#define N 4
/* These are the three towers. For example
if
the state of A is 0,1,3,4, that
* means that there are three discs on A of sizes 1, 3, and 4. (Think of right
* as being the
"down"
direction.) */
int
A[N], B[N], C[N];
void Hanoi(
int
,
int
*,
int
*,
int
*);
( run in 0.520 second using v1.01-cache-2.11-cpan-8d75d55dd25 )