这是我的问题:
Hunter、Laura、Addiley (jack)、Ramey(Sally) 和 Arnie(Jim) 都住在同一个宿舍里,有五间相邻的卧室。亨特不在第五间卧室睡觉,劳拉不在第一间卧室睡觉。Arnie 不在第一个或最后一个卧室睡觉,而且他不在与 Addiley 或 Laura 相邻的卧室。拉米睡在比劳拉更高的卧室里。谁睡在哪间卧室?编写一个 Prolog 程序来解决这个问题。
定义什么是邻接,然后是卧室,然后创建一个
layout(X)
允许您放入所有规则的地方。
这是我到目前为止的代码,我也尝试了一些变体:
adjcnt(X,Y) :- X = (Y+1;Y-1).
rooms([ bedroom(_, 1), bedroom(_, 2), bedroom(_, 3), bedroom(_, 4), bedroom(_, 5) ]).
layout(X) :- rooms(X),
member( bedroom(hunter, V), X),
member( bedroom(laura, W), X),
member( bedroom(arnie, X), X),
member( bedroom(ramey, Y), X),
member( bedroom(addiley,Z), X),
V \= 5,
W \= 1,
X \= 1,
X \= 5,
X \= adjcnt(X,Z),
X \= adjcnt(X,W),
Y @> W.
主要问题是,我是否正确计算了相邻的房间?以及如何正确实施。当我尝试运行代码时,我不断得到“不”。感谢任何可以帮助我的人!!