序言中的谜题

  • 本文关键字: prolog zebra-puzzle
  • 更新时间 :
  • 英文 :


有人解决这个难题:

使用给出的线索找出每个人的名字、葡萄酒、主菜和价格。以下是此拼图中使用的所有类别和选项。

名字:琳达、尼克、罗宾、弗吉尼亚葡萄酒:波尔多、基安蒂、梅洛、设拉子主菜:牛肉炒菜、柑橘鸡、菲力牛排、红鲷鱼价格: $24.99, $25.99, $26.99, $27.99

蛛丝马迹:

  1. 点红鲷鱼的食客没有波尔多。
  2. 林达的钱比拥有波尔多的人少。
  3. 拥有
  4. 波尔多的人和拥有基安蒂的人都不是支付26.99美元的人。
  5. 点牛肉炒菜的食客吃了基安蒂。
  6. 点柑橘鸡的食客比点基安蒂的食客少付1美元。
  7. 点菲力牛排的食客比吃设拉子的食客付的钱还少。
  8. 弗吉尼亚要么是点
  9. 牛肉炒菜的食客,要么是点红鲷鱼的食客。
  10. 拥有梅洛的人比罗宾少付 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.

请查阅斑马拼图标签上的问答。

相关内容

  • 没有找到相关文章

最新更新