我正在尝试为学校做 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.