【发布时间】:2020-03-23 16:33:56
【问题描述】:
我正在尝试为学校做 Prolog 作业,基本上是在尝试找出谁在哪个办公室。问题是:
Hunter、Laura、Jim、Sally 和 Jack 在同一栋大楼内工作,有五个相邻的办公室。亨特不在第五办公室工作,劳拉不在第一办公室工作。 Jim 不在第一个或最后一个办公室工作,而且他不在 Jack 或 Laura 旁边的办公室。莎莉在比劳拉更高的办公室工作。谁在什么办公室工作?
所以我有下面的代码,但我收到了:
uncaught exception: error(type_error(fd_evaluable,abs/1),(#\=)/2)
这里是代码。
puzzle(P) :-
findWhosOffice(P,Z),
labeling([],Z).
findWhosOffice(P, Z) :-
P = [hunter-Hunter, jack-Jack, jim-Jim, laura,Laura,sally,Sally],
Z = [Hunter, Laura, Jim, Sally, Jack],
Hunter #\= 5,
Laura #\= 1,
Jim #\= 1,
Jim #\= 5,
abs(Jim-Jack) #\=1,
abs(Jim-Laura) #\=1,
Sally #> Laura.
【问题讨论】:
标签: prolog typeerror clpfd zebra-puzzle