Prolog将结果显示在数组/列表中

时间:2018-08-20 04:55:41

标签: prolog

所以我遇到的这个问题困扰着我很多。

我们有student(sID,LR,[courses]).

其中sID是学生ID,LR用于确定他是左撇子还是右撇子,而[courses]是一系列课程。

接下来,我们有谓词{{​​1}},其中listStudents(C,L)代表一个课程,C代表列表。谓词要返回L课程中的学生名单。

示例:

C

现在,我已经尝试了几种方法:

student(23,1,[math101,phy203]).
student(24,0,[math101,phy203,art]).
student(25,1,[phy203,art]).

?- listStudents(math101,L)
L=[23,24]

后来我意识到这是错误的,因为它返回了我

listStudents(C,L):- student(C,_,Y), member(C,Y)

此后,我正在阅读有关findall()的信息,并且做到了

L=23
L=24

这会带来意想不到的回报

listStudents(C,L):- findall(S, study(C,S), L).
study(C,S):- estudiante(S,_,Y), member(C,Y).

0 个答案:

没有答案