gpt4 book ai didi

prolog - 在新列表 Prolog 中复制一个列表的所有元素 N 次

转载 作者:行者123 更新时间:2023-12-02 16:49:19 26 4
gpt4 key购买 nike

如何在不使用 Maplist、findall 或库的情况下使用 Prolog 的简单命令将一个列表的所有元素复制 N 次到一个新列表中。

例如我问 Prolog 的查询:

?- copy_list([a,b,c,d],3,List).

该查询的答案类似于:

List = [a,b,c,d,a,b,c,d,a,b,c,d].

最佳答案

我们可以首先生成一个包含N 个子列表的列表,然后用append/2 [swi-doc] 展平该列表。 :

repeat(0, _, []).
repeat(N, X, [X|T]) :-
N > 0,
N1 is N-1,
repeat(N1, X, T).

然后我们可以将 copy_list/3 谓词定义为:

copy_list(L, N, R) :-
copy_list(N, L, LL),
append(LL, R).

或者我们可以使用 append/3 [swi-doc]在这里,因此每次递减数字,并且

copy_list(_, 0, []).
copy_list(L, N, R) :-
N > 0,
N1 is N-1,
copy_list(L, N1, R2),
append(L, R2, R).

关于prolog - 在新列表 Prolog 中复制一个列表的所有元素 N 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59346407/

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