我正在尝试解决莫扎特盎司中的以下难题。
苏西喜欢动物,收藏了大量的毛绒玩具。然而,有几个是她最喜欢的。今天早上,她决定重新安排她的毛绒玩具,并在她的房间里给她最喜欢的每个人一个特别的地方。除了名字,她最喜欢的每一个毛绒玩具都有一个年龄,当然都比她年轻。确定她最喜欢的毛绒玩具的名称、每只动物的类型、她认为每只动物的年龄(从一岁到五年),以及她将每只最喜欢的毛绒玩具放在房间的什么地方。
臭鼬两岁了。老虎比放在书架上的动物小一岁,但老虎也比Cuddles大一岁。
放在椅子上的动物比威利大两岁,比鲸鱼小一岁。
拥抱不是臭鼬。小布还不到五岁。
猫被放在了床上。
这只熊比 Spot 大两岁。艾米是鲸鱼,但她没有被放在枕头上。
拥抱没有被放在板凳上。
这个谜题取自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
我得到的输出不是我所期望的,我不明白:
你能告诉我哪里出错了吗?