Задача про Ревизора - Prolog
Формулировка задачи:
Есть задача решённая на swi prolog
Волчонок, мартышка и бегемотик подошли к карусели, на которой кружились машинка и самолётик. Каждый из друзей хотел прокатиться и на том, и на другом. Машинка и самолётик вмещали только по одному пассажиру. За три захода каждый из друзей по разу прокатился на машинке и на самолётике. В первый заход мартышка прокатилась на самолётике, а волчонок — на машинке. Во время второго захода на самолётике катался волчонок. Кто и на чём катался во время третьего захода?
Реально ли переделать её на visual prolog 5.2? Или проще с нуля писать? Попытался переделать но ошибок куча и чем дальше тем страшнее(! Может посоветует кто что??? ps:Книгу читаю, за полезный совет не считается))
Листинг программы
- action(plane).
- action(car).
- action(shift).
- solve([passenger(monkey, [X1,X2,X3]), passenger(wolf, [Y1, Y2,Y3]),
- passenger(hippo, [Z1, Z2, Z3])]):-
- action(X1), action(Y1), action(Z1), unique([X1, Y1, Z1]),
- action(X2), action(Y2), action(Z2), unique([X2, Y2, Z2]),
- action(X3), action(Y3), action(Z3), unique([X3, Y3, Z3]),
- unique([X1, X2, X3]), unique([Y1, Y2, Y3]), unique([Z1, Z2, Z3]),
- X1 = plane, Y1 = car,
- Y2 = plane.
- unique([]).
- unique([E|Es]) :-
- maplist(dif(E), Es),
- unique(Es).
Ответьте кто нибудь пожалуйста!
Решение задачи: «Задача про Ревизора»
textual
Листинг программы
- domains
- li=passenger(jiv,lii)
- lii=li*
- jiv=monkey(String);wolf(String);hippo(String)
- predicates
- nondeterm member(jiv,li).
- solve(li).
- clauses
- solve([passenger(monkey, [X1,X2,X3]), passenger(wolf, [Y1, Y2,Y3]),
- passenger(hippo, [Z1, Z2, Z3])]):-member([X1, Y1, Z1]), member([X2, Y2, Z2]),member([X3, Y3, Z3]),
- member([X1, X2, X3]), member([Y1, Y2, Y3]), member([Z1, Z2, Z3]).
- member(H,[H|_]).
- member(H,[_|Tail]):-member(H,Tail).
- goal
- solve(X).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д