我正在用 Prolog 研究这种逻辑编程的新概念。我已经处理过削减,失败了,现在我正在讨论列表的主题。我有以下任务要做: - 编写一个函数evenmember(Element, List)
,它将显示一个元素是否位于列表中的偶数位置。例如evenmember(X,[1,5,3,2])
将连续显示解决方案X=5,X=2
。
我已经玩了一段时间并写了以下内容:
evenmember(_, []) :- !, fail.
evenmember(_, [_]) :- !, fail.
evenmember(X, [_, X]) :- !.
evenmember(Elem, List):-
[_, Elem1|Tail] = List,
Elem is Elem1,
evenmember(Elem1, Tail).
显示对我有用的结果的唯一方法是引入 write 函数,但它不适用于该任务。据我记得,我们不能直接使用Elem
和List
,所以我有点困惑。我寻求帮助,我将感谢您的帮助 =)