Я новичок в написании Пролога и хотел бы знать, как сформулировать следующие свойства так, чтобы это было полезно для дальнейшего рассуждения.
- Есть N объектов.
- Каждый объект имеет цвет.
- Существует три возможных цвета: красный, зеленый, синий
Предположим, есть два объекта: объект 1 красный, объект 2 имеет другой, цвет не указан Как я могу спросить у Пролога о возможных цветах объекта 2? Я бы ожидал зеленого и синего.
Мой код пока:
object(obj_1).
object(obj_2).
color_value(red).
color_value(green).
color_value(blue).
color(Obj, Val) :- object(Obj), color_value(Val).
color(obj_1, red).
different_color(O1, O2) :- color(O1, X), color(O2, Y), X \= Y.
different_color(obj_1, obj_2).
Когда я запрашиваю возможные цвета obj_2
, Prolog включает red
. Так что я как-то ошибаюсь.
color(obj_2, A).
A = red ;
A = green ;
A = blue.
Я подозреваю, что что-то не так с тем, как я использую цвет и другое_цвет.