Перенос программ в Visual Prolog 7.5
- 66
- 0
- Опубликовано: 2015-12-25
% Адаптация для Visual Prolog 7.5: Д.В.Зубков, vokbuz@ya.ru, 2015
/*****************************************************************************
Задача "Ханойская башня" является одной из самых древних логических задач и
заключается в перемещении пирамиды из n дисков с одного стержня на другой
с использованием вспомогательного стержня. Перемещения ограничиваются двумя
правилами:
- за один раз переносится только один диск;
- диски всегда должны располагаться в убывающей последовательности (больший диск
нельзя класть на меньший).
******************************************************************************/
implement main
open core, console
domains
loc = right;middle;left.
constants
n = 4. % число дисков в башне
class predicates
hanoi:(integer).
move:(integer,loc,loc,loc).
inform:(loc,loc).
clauses
hanoi(N) :-
move(N,left,middle,right).
move(1,A,_,C) :-
inform(A,C),
!.
move(N,A,B,C) :-
N1=N-1,
move(N1,A,C,B),
inform(A,C),
move(N1,B,A,C).
inform(Loc1, Loc2) :-
write("\nПеренести диск с ", Loc1, " стержня на ", Loc2, " стержень").
run() :-
write("Число дисков в башне = ",n,"\n"),
hanoi(n),
write("\n\n[нажмите клавишу ВВОД...]"),
_ = stdio::readLine().
end implement main
goal
console::run(main::run).