我需要帮助。我是prolog的新手,我没有习惯它。我想让其余的科目达到乔2没有注册的2级。 在prolog中有这些事实:
enrolled(joe,science).
enrolled(joe,math).
subjects(math, 2).
subject(science, 2).
subject(history,2).
subject(music, 2).
subject(health,3).
subject(literature,3).
我想要的输出是[历史,音乐]。我制作了这个规则,结合了subtract和findall内置的谓词,但没有用。可以有另一个可能的解决方案吗?感谢。
答案 0 :(得分:0)
我不知道减去/ 2(你的意思是交叉?)。 无论如何,你应该使用findall / 3获得所需的列表:
get_subject_available(Name, X) :-
findall(S, (subject(S,2), \+enrolled(Name,S)), X).