繁体   English   中英

如何在SWI序言中重复该列表?

[英]How Can I repeat the list in swi prolog?

如何在SWI序言中重复该列表?

{例如:当Y是由X个元素重复N次组成的列表时(例如repeat([a,b],[a,a,a,b,b,b ],3)是正确的。 }

在haskell ...

rep ls n = [i | i <-ls,_ <-[1 .. n]] main =打印$ rep [“ 1”,“ 2”] 3

前言

:-forall(I,between(1,3),Ls),Ls = [1,2,3]。

这里的技巧是具有嵌套的迭代-将N..1的迭代嵌套到原始列表元素之上的迭代中。 这在SWI-Prolog中有效:repeat_list([],[],_):-!。

repeat_list(_,[],0) :- !.

repeat_list(X,Y,N) :-
    N > 0,
    repeat_list(N,N,X,Y),
    !.

repeat_list(_,_,[],[]) :- !.

repeat_list(1,N,[H|List1],[H|List2]) :-
    repeat_list(N,N,List1,List2).

repeat_list(M,N,[H|List1],[H|List2]) :-
    L is M - 1,
    repeat_list(L,N,[H|List1],List2).

NB尽量不要使用标准条款名称,如repeat的目的,从什么标准打算用它来做不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM