Prolog 谓词来检查一个元素是否位于列表中另一个元素的后面
给出了一个列表和两个元素。首先,我需要检查这两个元素是否是列表的一部分。然后,检查一个元素Prolog 谓词来检查一个元素是否位于列表中另一个元素的后面,prolog,Prolog,给出了一个列表和两个元素。首先,我需要检查这两个元素是否是列表的一部分。然后,检查一个元素Elem2 在给定列表中的Elem1之后。 我使用的谓词是带有3个参数的weiterHinten 例如:检查列表[a,c,b,a]中c是否在b之后 weiterHinten([H|T],H,B). weiterHinten([H|T],A,B):-weiterHinten(T,A,B). weiterHinten([a,c,b,a],b,c). 这个目标需要返回false。我知道,在我发现列表的标题等于
Elem2
在给定列表中的
Elem1
之后。
我使用的谓词是带有3个参数的weiterHinten
例如:检查列表[a,c,b,a]中c是否在b之后
weiterHinten([H|T],H,B).
weiterHinten([H|T],A,B):-weiterHinten(T,A,B).
weiterHinten([a,c,b,a],b,c).
这个目标需要返回false。我知道,在我发现列表的标题等于A
之后,我需要检查B
是否是列表尾部的成员。如果是,则表示列表中B在A
之后,但我不确定如何执行此操作
我试过:
weiterHinten([H|T],H,B):-member(B,T).
但每当我呼唤目标时,无论
Elem2
在Elem1
之后,它对我来说总是返回真的weiterHinten([H | T],H,B)。
排除。这是weiterHinten([H | T],H,B)的一个语法捷径,-true.这是胡说八道
这对我有用:
weiterHinten([H|T],H,B) :- member(B, T).
weiterHinten([H|T],A,B) :- weiterHinten(T,A,B).
结果是
| ?- weiterHinten([a,c,b,a],b,c).
no
| ?- weiterHinten([a,b,c,a],b,c).
true
我不知道你的问题是什么。如果你具体说明“它不是以这种方式工作”的实际含义,可能会有所帮助;它在做什么。不管怎样,我试着回答,让我知道这是否有帮助。我的意思是,无论Elem2在列表中是否在Elem1之后,每当我呼唤目标时,它对我来说总是返回真的。例如,这个目标:?-weiterHinten([a,c,b,a],b,c)。返回给我的是真实的,即使不是。