我对prolog很新,我正在尝试实现一个名为fill的方法 具有结构
fill(4,1,X).
X = [1,1,1,1]
但是我不知道如何实现这个,因为我知道prolog不允许索引列表。那么我想如何返回数组。
答案 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).