Prolog办公室难题

问题描述 投票:0回答:1

我正在尝试为学校分配Prolog,基本上是在试图找出谁担任办公室。问题是:

亨特(Hunter),劳拉(Laura),吉姆(Jim),莎莉(Sally)和杰克(Jack)在同一座建筑物中工作,并设有五个相邻的办公室。亨特不在第五办公室工作,劳拉不在第一办公室工作。吉姆不在第一个或最后一个办公室里工作,而且他不在杰克或劳拉附近的办公室里。 Sally在比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
1个回答
0
投票

问题是您尚未在Z中定义变量的域。要使之成为有效且独特的解决方案,还缺少一个约束。

© www.soinside.com 2019 - 2024. All rights reserved.