【发布时间】:2018-02-13 02:19:05
【问题描述】:
我正在尝试解决莫扎特盎司中的以下难题。
苏西喜欢动物,收藏了大量毛绒玩具。然而,有几个是她最喜欢的。今天早上,她决定重新安排她的毛绒玩具,并在她的房间里给她最喜欢的每一个动物一个特别的地方。除了名字,她最喜欢的每一个毛绒玩具都有一个年龄,当然都比她年轻。确定她最喜欢的毛绒玩具的名称、每只动物的类型、她认为每只动物的年龄(从 1 岁到 5 岁)以及她将每只最喜欢的毛绒玩具放在房间的什么位置。
臭鼬两岁了。这只老虎比放在书架上的动物小一岁,但它也比 Cuddles 大一岁。
放在椅子上的动物比威利大两岁,比鲸鱼小一岁。
Cuddles 不是臭鼬。 Boo 还不到五岁。
猫被放在床上了。
这只熊比 Spot 大两岁。 Amee 是鲸鱼,但她没有被放在枕头上。
没有将拥抱放在长凳上。
这个谜题来自http://www.puzzles.com/Projects/LogicProblems/SusiesAnimals.htm
我的代码是 -
declare
proc {Tiger Nb}
Groups = [ [cuddles willies boo spot amee]
[skunk tiger whale cat bear]
[bookshelf chair bed pillow bench]]
Properties = {FoldR Groups Append nil}
proc {Partition Group}
{FD.distinct {Map Group fun {$ P} Nb.P end}}
end
in
%% Nb maps all properties to age
{FD.record number Properties 1#5 Nb}
{ForAll Groups Partition}
Nb.skunk = 2
Nb.tiger =(1 - Nb.bookshelf)+
Nb.tiger = 1 + Nb.cuddles
Nb.chair = 2 + Nb.willies
Nb.chair = 1 - Nb.whale
Nb.cuddles \=: Nb.skunk
Nb.boo \=: 5
Nb.cat = Nb.bed
Nb.bear = 2 + Nb.spot
Nb.amee = Nb.whale
Nb.amee \=: Nb.pillow
Nb.cuddles \=: Nb.bench
{FD.distribute ff Nb}
end
{Browse {SearchAll Tiger}}
我试图通过使用年龄数字作为标题来解决这个问题,并期待年龄数字的结果。类似于斑马问题http://doc.uh.cz/Mozart-oz/doc/fdt/node23.html
我得到的输出不是我所期望的,我不明白:
你能告诉我哪里出错了吗?
【问题讨论】:
标签: oz zebra-puzzle mozart