Мне нужна ваша помощь в решении следующей задачи:
3 девушки (Энн, Сьюзан, Алиса) должны выбрать обувь и платье какого цвета. Есть 3 возможных цвета для обуви и платьев: белый, синий и зеленый.
Основные условия:
- Энн ненавидит белое.
- Сьюзен носит туфли и платье того же цвета.
- У Алисы белые туфли.
- Туфли и платье Алисы и Энн имеют разные цвета.
Мой код удовлетворяет только 2 условиям; У меня вроде бы тяжелые времена, когда я встречаюсь с Сьюзен в одних и тех же цветах, в то время как другим девушкам нужно одевать разные цвета.
Вот что я придумаю:
PREDICATES
girl(symbol)
shoes(symbol,symbol)
skirt(symbol,symbol)
hates(symbol,symbol)
will_wear(symbol, symbol, symbol)
CLAUSES
will_wear(X,Y,Z):-
girl(X),
shoes(X,Y),
skirt(X,Z),
not(hates(X,Y)),
not(hates(X,Z)).
girl(ann).
girl(susan).
girl(alice).
hates(ann,white).
skirt(_,white).
skirt(_,blue).
skirt(_,green).
shoes(alice,white).
shoes(_,blue).
shoes(_,green).
GOAL
will_wear(Name,Shoes,Dress).
Код выше работает нормально, но дает слишком много решений. Кроме того, я не мог придумать никакого логичного решения для Сьюзен носить обувь и платье того же цвета.
Спасибо.