次の問題を解決するためにあなたの助けが必要です:
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).
上記のコードは問題なく動作しますが、解決策が多すぎます。さらに、スーザンが同じ色の靴とドレスを着用するという条件について、論理的な解決策を思いつきませんでした。
ありがとう。