Задача про Ревизора - Prolog

Узнай цену своей работы

Формулировка задачи:

Есть задача решённая на swi prolog Волчонок, мартышка и бегемотик подошли к карусели, на которой кружились машинка и самолётик. Каждый из друзей хотел прокатиться и на том, и на другом. Машинка и самолётик вмещали только по одному пассажиру. За три захода каждый из друзей по разу прокатился на машинке и на самолётике. В первый заход мартышка прокатилась на самолётике, а волчонок — на машинке. Во время второго захода на самолётике катался волчонок. Кто и на чём катался во время третьего захода?
Листинг программы
  1. action(plane).
  2. action(car).
  3. action(shift).
  4. solve([passenger(monkey, [X1,X2,X3]), passenger(wolf, [Y1, Y2,Y3]),
  5. passenger(hippo, [Z1, Z2, Z3])]):-
  6. action(X1), action(Y1), action(Z1), unique([X1, Y1, Z1]),
  7. action(X2), action(Y2), action(Z2), unique([X2, Y2, Z2]),
  8. action(X3), action(Y3), action(Z3), unique([X3, Y3, Z3]),
  9. unique([X1, X2, X3]), unique([Y1, Y2, Y3]), unique([Z1, Z2, Z3]),
  10. X1 = plane, Y1 = car,
  11. Y2 = plane.
  12. unique([]).
  13. unique([E|Es]) :-
  14. maplist(dif(E), Es),
  15. unique(Es).
Реально ли переделать её на visual prolog 5.2? Или проще с нуля писать? Попытался переделать но ошибок куча и чем дальше тем страшнее(! Может посоветует кто что??? ps:Книгу читаю, за полезный совет не считается))
Ответьте кто нибудь пожалуйста!

Решение задачи: «Задача про Ревизора»

textual
Листинг программы
  1. domains
  2. li=passenger(jiv,lii)
  3. lii=li*
  4. jiv=monkey(String);wolf(String);hippo(String)
  5. predicates
  6. nondeterm member(jiv,li).
  7. solve(li).
  8. clauses
  9. solve([passenger(monkey, [X1,X2,X3]), passenger(wolf, [Y1, Y2,Y3]),
  10. passenger(hippo, [Z1, Z2, Z3])]):-member([X1, Y1, Z1]), member([X2, Y2, Z2]),member([X3, Y3, Z3]),
  11. member([X1, X2, X3]), member([Y1, Y2, Y3]), member([Z1, Z2, Z3]).
  12.  member(H,[H|_]).
  13. member(H,[_|Tail]):-member(H,Tail).
  14.   goal
  15.   solve(X).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.286 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут