Задача про шахматистов - Prolog

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

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

Очень нужна помощь людей, кто разбирается в PROLOG. я к сожалению не очень его понимаю. В финале турнира шахматистов встретились представители шести воинских званий: майор, капитан, лейтенант, старшина, сержант и ефрейтор. Все они были разных специальностей : летчик, танкист, артиллерист, минометчик, сапер и связист. Необходимо определить специальность каждого из шахматистов по следующим данным. В первом туре лейтенант выиграл у летчика, майор у танкиста, а сержант у минометчика. Во втором туре капитан выиграл у танкиста. В третьем и четвертом турах минометчик из-за болезни не участвовал в турнире, поэтому свободными от игры оказались капитан и ефрейтор. В четвертом туре майор выиграл у связиста. Победителями турнира оказались лейтенант и майор, а хуже всех выступил сапер. Заранее спасибо.

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

textual
Листинг программы
  1. domains
  2. d=symbol
  3. predicates
  4. zvanie(symbol)
  5. spec(symbol)
  6. rez(symbol,symbol)
  7. solution(symbol,symbol,symbol,symbol,symbol,symbol,symbol,symbol,symbol,symbol,symbol,symbol)
  8. clauses
  9. zvanie(major).
  10. zvanie(kapitan).
  11. zvanie(leitenant).
  12. zvanie(starshina).
  13. zvanie(serjant).
  14. zvanie(efreitor).
  15. spec(letchik).
  16. spec(tankist).
  17. spec(artilerist).
  18. spec(minometchik).
  19. spec(saper).
  20. spec(svazist).
  21. rez(X,Y):-
  22. zvanie(X),spec(Y),X=major,not(Y=letchik),not(Y=tankist),not(Y=minometchik),not(Y=svazist),not(Y=saper);
  23. zvanie(X),spec(Y),X=kapitan,not(Y=tankist),not(Y=minometchik),not(Y=svazist);
  24. zvanie(X),spec(Y),X=leitenant,not(Y=letchik),not(Y=tankist),not(Y=minometchik),not(Y=saper);
  25. zvanie(X),spec(Y),X=starshina;
  26. zvanie(X),spec(Y),X=serjant,not(Y=letchik),not(Y=tankist),not(Y=minometchik);
  27. zvanie(X),spec(Y),X=efreitor,not(Y=minometchik),not(Y=svazist).
  28. solution(X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5,X6,Y6):-zvanie(X1),zvanie(X2),zvanie(X3),zvanie(X4),zvanie(X5),zvanie(X6),
  29. spec(Y1),spec(Y2),spec(Y3),spec(Y4),spec(Y5),spec(Y6),
  30. rez(X1,Y1),rez(X2,Y2),rez(X3,Y3),rez(X4,Y4),rez(X5,Y5),rez(X6,Y6),
  31. Y1<>Y2,Y1<>Y3,Y1<>Y4,Y1<>Y5,Y1<>Y6,Y2<>Y3,Y2<>Y4,Y2<>Y5,Y2<>Y6,Y3<>Y4,Y3<>Y5,Y3<>Y6,Y4<>Y5,Y4<>Y6,Y5<>Y6,
  32. X1<>X2,X1<>X3,X1<>X4,X1<>X5,X1<>X6,X2<>X3,X2<>X4,X2<>X5,X2<>X6,X3<>X4,X3<>X5,X3<>X6,X4<>X5,X4<>X6,X5<>X6,!.

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


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

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

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

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

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

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