我正在尝试学习 Prolog,并且一直在做一些练习。
有一张包含学生姓名的名单。写谓词filter(L,LN)
返回名为的第二个列表LN
其中包括这样的名称:
?- filter([kostas, dimitris, anna, antonis, antonia], LN).
LN = [kostas, anna, antonia]
所以..它显示一个然后跳过一个并连续执行此操作。
这就是我所做的,但它是不正确的。
filter([],[]).
filter([H|T],[H|LN]) :-
filter(T,LN,0).
filter([H|T],[H|LN],C) :-
0 is C mod 2,
append(H,LN),
C = C + 1,
filter(T,LN,C).
filter([H|T],LN,C) :-
(C/2) \= 0,
C = C + 1,
filter(T,LN,C).