Логическая задача на SWI Prolog

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

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

Задали решить логическую задачу посредством языка пролог, лог задачи: На столе лежат в ряд четыре фигуры: треугольник, ромб, круг и квадрат. Квадрат, круг, ромб и треугольник вырезаны из белой, синей, красной и зеленой бумаги. Известно, что: круг не белый и не зеленый; синяя фигура лежит между ромбом и красной фигурой; треугольник не синий и не зеленый; квадрат лежит между треугольником и белой фигурой. Из бумаги какого цвета вырезан ромб? Вышла такая программа:
Но я не знаю, как составить запрос, и будет ли он работать, выручайте, форумчанцы!

Решение задачи: «Логическая задача на SWI Prolog»

textual
Листинг программы
solve(Table),
member(table(_, romb, RombColor), Table),
write(RombColor).

Объяснение кода листинга программы

  1. solve(Table) - функция, которая принимает на вход список таблиц Table и пытается найти решение для данной задачи.
  2. member(table(_, romb, RombColor), Table) - проверка, есть ли в списке таблиц Table таблица, у которой есть поле romb, и если есть, то присваиваем переменной RombColor значение этого поля.
  3. write(RombColor) - выводим значение переменной RombColor, которое представляет собой цвет ячейки таблицы, на экран.

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

8   голосов , оценка 4.25 из 5