首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >嵌套Prolog查询(不同条件之间的查询)

嵌套Prolog查询(不同条件之间的查询)
EN

Stack Overflow用户
提问于 2018-03-21 21:34:38
回答 1查看 89关注 0票数 1

我正在Prolog中对这段代码进行一些查询:

代码语言:javascript
运行
复制
student(ali).
student(sami).
student(rami).
student(mousa).
student(muna).
student(amal).
student(omar).

course(ai).
course(java).
course(calculus2).
course(calculus1).
course(robots).

teacher(hashem).
teacher(mohammad).
teacher(ibrahim).
teacher(kareem).

prerequest(ai,java).
prerequest(calculus2,calculus1).
prerequest(robots,ai).

study(ali,ai).
study(ali,java).
study(sami,java).
study(rami,calculus2).
study(mousa,ai).
study(muna,java).
study(amal,calculus1).
study(omar,robots).

teach(hashem,ai).
teach(mohammad,java).
teach(ibrahim,calculus2).
teach(ibrahim,calculus1).
teach(kareem,robots).

teacher_of(X, Y):-
    study(X, Z),
    teach(Z, Y).

现在,我想找到所有老师的学生“阿里”吗?我以前试过这样做:

代码语言:javascript
运行
复制
?- teacher_of(ali, B).

但是它给了我一个错误,以及消息末尾的一个单词(作为答案)。

注意:我正在使用这个在线编辑器:这里。

你有什么建议吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-21 22:03:30

你必须写:

代码语言:javascript
运行
复制
teacher_of(X,Y):-
    study(X,Z),
    teach(Y,Z).

?- teacher_of(ali, B).
B = hashem
B = mohammad

(你交换了ZYteach/2。要找到所有的老师,只需使用findall/3

代码语言:javascript
运行
复制
?- findall(B,teacher_of(ali, B),LB)

LB = [hashem, mohammad]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49416911

复制
相关文章

相似问题

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