我想通过练习快速复习我的课程。但我没有办法让这些做法检查。你能给我一个解决方案,所以当我遇到困难时。我可以在这里很快找到一些指导。第一个问题如下所述。提前致谢。
问题1。我们回想一下,如果 T 是一个项并且 L 是包含 L 的函子和主要子项的列表,则满足内置谓词 T =.. L。例如,f(a,g(b)) =..当 L = [ f, a, g(b) ] 时满足 L,并且 a =.. 当 List = [a] 时满足 List。
使用 =.. 定义当 T1 是 T2 的子项时满足的谓词 subterm(T1,T2)。您可以假设 T1 和 T2 没有变量。您可能还想使用内置谓词 atomic(X) 或 Compound(X) 按此顺序检查 X 是否是原子项和结构。
我的解决方案是:
subterm(X,[X]):-atom(X),!.
subterm(T1,T2):-
compound(T1),
T1=..U,
U=[X|Y],
T2=Y.
任何建议将被认真考虑。谢谢!