List 关于prolog的一个具有挑战性的列表问题

List 关于prolog的一个具有挑战性的列表问题,list,prolog,List,Prolog,我不熟悉prolog。你能帮我解决这个问题吗 考试(数学,保罗) 考试(物理,保罗) 考试(cmpe,索非亚) 考试(生物学,乔治) 我想实现谓词otherExam(L,N)。L是一节课,N是L的学生上过的所有课(L除外)的列表 其他考试(数学,X)。返回[物理] 其他检查(cmpe,X)。返回[] 其他检查(化学,X)。返回false(无此类教训) 其他考试(数学,[phys])返回true 其他考试(X,[物理])。返回数学 我在这个问题上遇到了麻烦。如果你能帮助我,我将非常高兴:)检查一下

我不熟悉prolog。你能帮我解决这个问题吗

考试(数学,保罗)

考试(物理,保罗)

考试(cmpe,索非亚)

考试(生物学,乔治)

我想实现谓词otherExam(L,N)。L是一节课,N是L的学生上过的所有课(L除外)的列表

其他考试(数学,X)。返回[物理]

其他检查(cmpe,X)。返回[]

其他检查(化学,X)。返回false(无此类教训)

其他考试(数学,[phys])返回true

其他考试(X,[物理])。返回数学

我在这个问题上遇到了麻烦。如果你能帮助我,我将非常高兴:)

检查一下

findall/3用于从查询中获取所有可能的结果

例如,findall(X,祖先(X,paul),L)将找到所有X,例如X是paul的祖先,并将它们放在列表中L

如果你展示你所做的尝试,会有很大帮助,这也是家庭作业吗?好的。其实我明白你的意思。我必须做那样的事;其他考试(L,N):-findall(T,(考试(T,,,,,,,,,,,,,,,,,,我需要这里的某样东西),Ts,选择(L,Ts,N)。但是我无法检查一个人是否有两次考试:(好吧,如果一个人只有一次考试,列表N将为空。如果你想让谓词otherExam/2在没有其他考试的情况下失败,你可以这样写:otherExam(L,N):-fidnall(课,考试(课),课),选择(L,课,列表),not_empty(列表)。not_empty([124; empty])。