如何在prolog中实现填充方法

时间:2015-05-08 15:14:01

标签: list prolog

我对prolog很新,我正在尝试实现一个名为fill的方法 具有结构

fill(4,1,X).
X = [1,1,1,1]

但是我不知道如何实现这个,因为我知道prolog不允许索引列表。那么我想如何返回数组。

3 个答案:

答案 0 :(得分:4)

fill(N, E, Xs) :-
   length(Xs, N),       % Xs is a list of length N
   maplist(=(E), Xs).   % all elements in Xs are equal to E

答案 1 :(得分:2)

%fill(+N,+X,-L) element X is replicated N times
fill(0,_,[]).
fill(N,X,[X|Xs]) :- N > 0, N1 is N-1, fill(N1,X,Xs).

答案 2 :(得分:0)

findall / 3它是列表构建的swissknife:

fill(N, E, Xs) :- findall(E, between(1, N, _), Xs).