Задача про лагерь Артек и ребят. Переделать решение - Prolog
Формулировка задачи:
Здравствуйте. Есть задача:
Есть решение с использованием списков:
Однажды в Артеке за круглым столом оказалось пятеро ребят родом из Москвы, Санкт-Петербурга, Новгорода, Перми и Томска: Юра, Толя, Алеша, Коля и Витя. Москвич сидел между томичем и Витей, санкт-петербуржец - между Юрой и Толей, а напротив него сидели пермяк и Алеша. Коля никогда не был в Санкт-Петербурге, а Юра не бывал в Москве и Томске, а томич с Толей регулярно переписываются. Определите, в каком городе живет каждый из ребят.
Помогите пожалуйста переписать решение без использования списков, только через предикаты.
Решение задачи: «Задача про лагерь Артек и ребят. Переделать решение»
textual
Листинг программы
domains s=symbol predicates solve(s,s,s,s,s) city(s) clauses city("Moskva"). city("Sankt_piter"). city("Novgorod"). city("Perm"). city("Tomsk"). solve(Ura,Vitia,Tolia,Alesha,Kolia):- city(Ura),Ura="Novgorod", city(Kolia),Ura<>Kolia,Kolia<>"Sankt_piter","Perm"<>"Sankt_piter", city(Tolia),Tolia<>Kolia,Tolia<>Ura,Tolia<>"Tomsk",Tolia<>"Sankt_piter",Tolia<>"Perm", city(Alesha),Alesha<>Tolia,Alesha<>Kolia,Alesha<>Ura,Alesha<>"Sankt_piter",Alesha<>"Perm", city(Vitia),Vitia<>Ura,Vitia<>Kolia,Vitia<>Tolia,Vitia<>Alesha,Vitia<>"Moskva","Moskva"<>"Tomsk". goal solve(Ura,Vitia,Tolia,Alesha,Kolia).
Объяснение кода листинга программы
В коде на языке Prolog дана задача, связанная с лагерем Артек
и его воспитанниками. В коде определены следующие переменные:
- s - символ
- Ura, Vitia, Tolia, Alesha, Kolia - переменные, представляющие имена воспитанников лагеря Определены следующие предикаты:
- city(s) - предикат, определяющий, является ли символ s названием города
- solve(s,s,s,s,s) - предикат, решающий задачу В коде присутствуют следующие утверждения:
- city(
Moskva
) - Москва является городом - city(
Sankt_piter
) - Санкт-Петербург является городом - city(
Novgorod
) - Новгород является городом - city(
Perm
) - Пермь является городом - city(
Tomsk
) - Томск является городом Также в коде есть цель - решить задачу, то есть найти значения переменных Ura, Vitia, Tolia, Alesha, Kolia, при которых выполняются все условия. Условия задачи, которые заданы в коде, можно разделить на следующие группы: - Условие на город Ura и Kolia:
- Ura=
Novgorod
- Ura<>Kolia
Perm
<>Kolia
- Ura=
- Условие на город Tolia и Kolia:
- city(Tolia)
- Tolia<>Kolia
- Tolia<>Ura
- Tolia<>
Tomsk
- Tolia<>
Sankt_piter
- Tolia<>
Perm
- Условие на город Alesha и Kolia:
- city(Alesha)
- Alesha<>Tolia
- Alesha<>Kolia
- Alesha<>Ura
- Alesha<>
Sankt_piter
- Alesha<>
Perm
- Условие на город Vitia и Kolia:
- city(Vitia)
- Vitia<>Ura
- Vitia<>Kolia
- Vitia<>Tolia
- Vitia<>Alesha
- Vitia<>
Moskva
- Vitia<>
Tomsk
Таким образом, в коде дана система уравнений, которую нужно решить, чтобы найти значения переменных Ura, Vitia, Tolia, Alesha, Kolia, при которых все условия выполняются.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д