我正在尝试使用 Prolog 解决爱因斯坦之谜。当我试图通过房屋(Hs)运行时,它显示否。任务是
- 英国人住在红房子里。
- 瑞典人养狗作为宠物。
- 丹麦人喝茶。
- 绿房子就在白宫的左边。
- 温室的主人喝咖啡。
- 抽 Pall Mall 烟的店主养鸟。
- 黄色房子的主人抽登喜路。
- 住在中心屋的主人喝牛奶。
- 挪威人住在第一间房子里。
- 抽 Blends 的主人住在养猫的主人旁边。
- 养马的主人住在抽登喜路的主人旁边。
- 抽 Bluemasters 的老板喝啤酒。
- 德国人抽王子烟。
- 挪威人住在蓝屋旁边。
- 抽 Blends 的主人住在喝水的人旁边。
房屋(Hs):-
长度(Hs,5),
成员(h(英语,_,_,_,红色),Hs),
成员(h(瑞典人,狗,_,_,_),Hs),
成员(h(_,_,_,咖啡,绿色),Hs),
成员(h(丹麦人,_,_,茶,_),Hs),
下一个(h(_,_,_,_,green), h(_,_,_,_,white), Hs),
成员(h(_,鸟,'Pall Mall',_,_),Hs),
成员(h(_,_,'登喜路',_,黄色),Hs),
Hs = [_,_,h(_,_,_,牛奶,_),_,_],
Hs = [h(挪威语,_,_,_,_)|_],
下一个(h(_,马,_,_,_), h(_,_,'登喜路',_,_), Hs),
下一个(h(_,_,混合,_,_), h(_,cat,_,_,_), Hs),
成员(h(_,_,'蓝色大师',啤酒,_),Hs),
成员(h(德语,_,'王子',_,_),Hs),
下一个(h(挪威语,_,_,_,_), h(_,_,_,_,blue), Hs),
下一个(h(_,_,'混合',_,_), h(_,_,_,水,_), Hs),
成员(h(_,鱼,_,_,_),Hs)。
下一个(A,B,Ls):-追加(_,[A,B|_],Ls)。
下一个(A,B,Ls):-追加(_,[B,A|_],Ls)。
我不知道出了什么问题。谢谢