我正在尝试解决 Prolog 中的一个谜语。谜底是:有两栋楼,每栋都有树公寓(每层公寓):一套3室,一套4室,一套5室。
Dana、Joni 和 Noah 住在 1 号楼。Ron、Gale 和 Aron 住在 2 号楼。
Joni 的公寓比 Dana 和 Noah 高。这意味着他住在 1 号楼的三楼。诺亚和盖尔住在同一层(在不同的建筑物中)。Ron 比 Aron 多一个房间。罗恩住在盖尔楼上。2号楼最高的公寓是5室公寓。
我需要找出每个人住在哪一层。
我写了这段代码:
solve([dana,building1,F1,R1],[noah,building1,F2,R2],[joni,building1,F3,R3],[gale,building2,F4,R4],[ron,building2,F5,R5],[aron,building2,F6,R6]
) :-
L =[[dana,building1,1,3],[dana,building1,1,4],[dana,building1,1,5],[dana,building1,2,3],[dana,building1,2,4],[dana,building1,2,5],[dana,building1,3,3],[dana,building1,3,4],[dana,building1,3,5]
,[noah,building1,1,3],[noah,building1,1,4],[noah,building1,1,5],[noah,building1,2,3],[noah,building1,2,4],[noah,building1,2,5],[noah,building1,3,3],[noah,building1,3,4],[noah,building1,3,5]
,[joni,building1,1,3],[joni,building1,1,4],[joni,building1,1,5],[joni,building1,2,3],[joni,building1,2,4],[joni,building1,2,5],[joni,building1,3,3],[joni,building1,3,4],[joni,building1,3,5]
,[gale,building1,1,3],[gale,building1,1,4],[gale,building1,1,5],[gale,building1,2,3],[gale,building1,2,4],[gale,building1,2,5],[gale,building1,3,3],[gale,building1,3,4],[gale,building1,3,5]
,[ron,building1,1,3],[ron,building1,1,4],[ron,building1,1,5],[ron,building1,2,3],[ron,building1,2,4],[ron,building1,2,5],[ron,building1,3,3],[ron,building1,3,4],[ron,building1,3,5]
,[aron,building1,1,3],[aron,building1,1,4],[aron,building1,1,5],[aron,building1,2,3],[aron,building1,2,4],[aron,building1,2,5],[aron,building1,3,3],[aron,building1,3,4],[aron,building1,3,5]],
F3 > F2,
F3>F1,
F2 == F4,
R5 == R6-1,
F5 == F4+1,
(F4 == 3, R4 == 5;F5 == 3, R5 == 5; F6 == 3, R6 == 5),
del([dana,building1,F1,R1],L,List1),
del([noah,building1,F2,R2],List1,List2),
del([joni,building1,F3,R3],List2,List3),
del([gale,building2,F4,R4],List3,List4),
del([ron,building2,F5,R5],List4,List5),
del([aron,building2,F6,R6],List5,_).
del(X,L,L1) :-
remove(X,L,L1).
但是当我执行查询时:
solve([dana,building1,F1,R1],[noah,building1,F2,R2],[joni,building1,F3,R3],[gale,building2,F4,R4],[ron,building2,F5,R5],[aron,building2,F6,R6]).
我得到:
"Error 22 : Instantiation Error"
任何人?我不明白我做错了什么。