所以我明天有这个作业。我必须过滤列表的每个第 n 个元素并将其作为列表返回。例如:
?- 每Nth(3,[a,b,c,d,e,f],Rs)。Rs = [c,f]。
我的想法基本上是:
everynth(N, [X|Xs], L) :- everynth(N, [X|Xs], N, L).
everynth(N, [], C, L).
everynth(N, [X|Xs], 0, [X]) :- everynth(N, Xs, N, [X]).
everynth(N, [X|Xs], C, L) :- C1 is C -1,
everynth(N,Xs,C1,L).
但它不能以这种方式工作,因为在第三行它试图匹配 X 和返回 X 和 Count 0 第二次去那里。