75392e54c7
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@757 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
45 lines
718 B
Plaintext
45 lines
718 B
Plaintext
|
|
:- object(hanoi).
|
|
|
|
|
|
:- info([
|
|
version is 1.0,
|
|
date is 1998/3/23,
|
|
author is 'Paulo Moura',
|
|
comment is 'Towers of Hanoi.']).
|
|
|
|
|
|
:- public(run/1).
|
|
:- mode(run(+integer), one).
|
|
|
|
:- info(run/1, [
|
|
comment is 'Solves the towers of Hanoi problem for the specified number of disks.',
|
|
argnames is ['Disks']]).
|
|
|
|
|
|
run(Disks) :-
|
|
move(Disks, left, middle, right).
|
|
|
|
|
|
move(1, Left, _, Right):-
|
|
!,
|
|
report(Left, Right).
|
|
|
|
move(Disks, Left, Aux, Right):-
|
|
Disks2 is Disks - 1,
|
|
move(Disks2, Left, Right, Aux),
|
|
report(Left, Right),
|
|
move(Disks2, Aux, Left, Right).
|
|
|
|
|
|
report(Pole1, Pole2):-
|
|
write('Move a disk from '),
|
|
writeq(Pole1),
|
|
write(' to '),
|
|
writeq(Pole2),
|
|
write('.'),
|
|
nl.
|
|
|
|
|
|
:- end_object.
|