有人解决这个难题:
使用给出的线索找出每个人的名字、葡萄酒、主菜和价格。以下是此拼图中使用的所有类别和选项。
名字:琳达、尼克、罗宾、弗吉尼亚葡萄酒:波尔多、基安蒂、梅洛、设拉子主菜:牛肉炒菜、柑橘鸡、菲力牛排、红鲷鱼价格: $24.99, $25.99, $26.99, $27.99
蛛丝马迹:
- 点红鲷鱼的食客没有波尔多。
- 林达的钱比拥有波尔多的人少。 拥有
- 波尔多的人和拥有基安蒂的人都不是支付26.99美元的人。
- 点牛肉炒菜的食客吃了基安蒂。
- 点柑橘鸡的食客比点基安蒂的食客少付1美元。
- 点菲力牛排的食客比吃设拉子的食客付的钱还少。 弗吉尼亚要么是点
- 牛肉炒菜的食客,要么是点红鲷鱼的食客。
- 拥有梅洛的人比罗宾少付 1 美元。
源:
logic-puzzles.org
弄清楚每个人的名字、葡萄酒、主菜和价格
所以我们把每个人表示为4元复合项,p(Name,Wine,Entree,Price)
。似乎也有四个。
然后我们只是写下我们被告知的内容:
wine_and_dine(People):-
length(People,4),
Ordered1 = p(_,W1,red_snapper,_),
member(Ordered1, People),
% W1 = bordeaux, but delay writing this down
% until it is defined some more
% or use freeze/2 in SWI:
freeze( W1, W1 = bordeaux),
Lynda2 = p(lynda,_,_,PL2),
Had2 = p(_,bordeaux,_,PB2),
member(Lynda2, People),
member(Had2, People),
% PL2 < PB2, % check this only when they are known; or
freeze(PL2, freeze(PB2, PL2 < PB2)),
.... etc.
请查阅斑马拼图标签上的问答。