Задача про лагерь Артек и ребят. Переделать решение - 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 дана задача, связанная с лагерем Артек и его воспитанниками. В коде определены следующие переменные:

  1. s - символ
  2. Ura, Vitia, Tolia, Alesha, Kolia - переменные, представляющие имена воспитанников лагеря Определены следующие предикаты:
  3. city(s) - предикат, определяющий, является ли символ s названием города
  4. solve(s,s,s,s,s) - предикат, решающий задачу В коде присутствуют следующие утверждения:
  5. city(Moskva) - Москва является городом
  6. city(Sankt_piter) - Санкт-Петербург является городом
  7. city(Novgorod) - Новгород является городом
  8. city(Perm) - Пермь является городом
  9. city(Tomsk) - Томск является городом Также в коде есть цель - решить задачу, то есть найти значения переменных Ura, Vitia, Tolia, Alesha, Kolia, при которых выполняются все условия. Условия задачи, которые заданы в коде, можно разделить на следующие группы:
  10. Условие на город Ura и Kolia:
    • Ura=Novgorod
    • Ura<>Kolia
    • Perm<>Kolia
  11. Условие на город Tolia и Kolia:
    • city(Tolia)
    • Tolia<>Kolia
    • Tolia<>Ura
    • Tolia<>Tomsk
    • Tolia<>Sankt_piter
    • Tolia<>Perm
  12. Условие на город Alesha и Kolia:
    • city(Alesha)
    • Alesha<>Tolia
    • Alesha<>Kolia
    • Alesha<>Ura
    • Alesha<>Sankt_piter
    • Alesha<>Perm
  13. Условие на город Vitia и Kolia:
    • city(Vitia)
    • Vitia<>Ura
    • Vitia<>Kolia
    • Vitia<>Tolia
    • Vitia<>Alesha
    • Vitia<>Moskva
    • Vitia<>Tomsk Таким образом, в коде дана система уравнений, которую нужно решить, чтобы найти значения переменных Ura, Vitia, Tolia, Alesha, Kolia, при которых все условия выполняются.

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


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

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

13   голосов , оценка 3.846 из 5