gpt4 book ai didi

list - Prolog - 过滤器列表

转载 作者:行者123 更新时间:2023-12-04 18:17:23 37 4
gpt4 key购买 nike

所以我明天有这个作业。我必须过滤列表的每个第 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 它第二次去那里。

最佳答案

你快到了。检查这些修改:

everynth(N, L, NL) :- everynth(N, L, N, NL).

everynth(_, [], _, []).
everynth(N, [X|Xs], 1, [X|NXs]) :- everynth(N, Xs, N, NXs).
everynth(N, [_|Xs], C, NXs) :- C1 is C-1, C1>0,
everynth(N,Xs,C1,NXs).
everynth/4 的第一个子句是递归的终止。当输入列表中没有更多项目时,它应该给出一个空列表。
everynth/4的第二个子句处理第 n 个项目,它必须将输入项目放在输出列表中,并继续处理剩余的项目,重新启动你的项目计数器。

以及 everynth/4的第三个子句处理不是第 n 个元素的项目,因此您必须跳过该项目,递减计数器并继续处理剩余的项目。

关于list - Prolog - 过滤器列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11415907/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com