Логическая задача на SWI Prolog
Формулировка задачи:
Задали решить логическую задачу посредством языка пролог, лог задачи:
На столе лежат в ряд четыре фигуры: треугольник, ромб, круг и квадрат. Квадрат, круг, ромб и треугольник вырезаны из белой, синей, красной и зеленой бумаги. Известно, что: круг не белый и не зеленый; синяя фигура лежит между ромбом и красной фигурой; треугольник не синий и не зеленый; квадрат лежит между треугольником и белой фигурой. Из бумаги какого цвета вырезан ромб?
Вышла такая программа:
Но я не знаю, как составить запрос, и будет ли он работать, выручайте, форумчанцы!
Решение задачи: «Логическая задача на SWI Prolog»
textual
Листинг программы
solve(Table), member(table(_, romb, RombColor), Table), write(RombColor).
Объяснение кода листинга программы
solve(Table)
- функция, которая принимает на вход список таблицTable
и пытается найти решение для данной задачи.member(table(_, romb, RombColor), Table)
- проверка, есть ли в списке таблицTable
таблица, у которой есть полеromb
, и если есть, то присваиваем переменнойRombColor
значение этого поля.write(RombColor)
- выводим значение переменнойRombColor
, которое представляет собой цвет ячейки таблицы, на экран.