首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prolog办公室拼图

Prolog办公室拼图
EN

Stack Overflow用户
提问于 2020-03-23 16:33:56
回答 2查看 149关注 0票数 0

我试图为学校做一个Prolog作业,基本上是想找出谁有什么办公室。问题是:

亨特、劳拉、吉姆、萨利和杰克在同一幢大楼里工作,有五个相邻的办公室。亨特不在第五间办公室工作,劳拉不在第一间办公室工作。吉姆不在第一间或最后一间办公室工作,也不在杰克或劳拉旁边的办公室。莎莉在比劳拉高的办公室工作。谁在哪个办公室工作?

所以我有下面的代码,但是我收到了:

代码语言:javascript
复制
uncaught exception: error(type_error(fd_evaluable,abs/1),(#\=)/2)

这是密码。

代码语言:javascript
复制
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.
EN

回答 2

Stack Overflow用户

发布于 2020-04-02 05:05:38

问题是您还没有为Z中的变量定义域。也有一个限制是缺少的,以使它成为一个有效和唯一的解决方案。

票数 0
EN

Stack Overflow用户

发布于 2020-12-08 16:12:47

下面是我的解决方案,我看到您没有使用all_different():

代码语言:javascript
复制
:-use_module(library(clpfd)).

puzzle(Employee,Employee_Office_Room):-
    Employee=[Hunter, Laura, Jim, Sally, Jack], Employee ins 1..5,
    Employee_Office_Room=[First,_Second,_Third,_Fourth,Fifth], Employee_Office_Room ins 1..5,
    all_different(Employee),
    all_different(Employee_Office_Room),
    
    Hunter#\=Fifth,
    Laura#\=First,
    Jim#\=First,
    Jim#\=Fifth,
    not_nextto(Jim,Laura),
    not_nextto(Jim,Jack),
    Sally#=Laura-1,
    labeling([],Employee),labeling([],Employee_Office_Room).
    
    not_nextto(A,B):-abs(A-B)#\=1.

?-puzzle(Employee,Employee_Office_Room).
Employee = [1, 4, 2, 3, 5],
Employee_Office_Room = [1, 2, 3, 4, 5]
Employee = [1, 4, 2, 3, 5],
Employee_Office_Room = [1, 2, 3, 5, 4]
Employee = [1, 4, 2, 3, 5],
Employee_Office_Room = [1, 2, 4, 3, 5]
Employee = [1, 4, 2, 3, 5],
Employee_Office_Room = [1, 2, 4, 5, 3]
Employee = [1, 4, 2, 3, 5],
Employee_Office_Room = [1, 2, 5, 3, 4]....
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60817726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档