我是prolog的初学者,我想编写一个基于另一个列表创建列表的代码。我写道:
<span>${links.join(' / ')}</span>
我想获得一个大小等于5(K)的列表,其中填充零,除了在输入列表中指定的值为-1的位置(我没有反转它)。
答案 0 :(得分:1)
我认为您的代码应该是 - 请注意列表是在 head 中构建的,以避免反转)
create(_ ,N,K, []) :- N > K, !.
create([N|Xs],N,K,[-1|L]) :- !, N1 is N + 1, create(Xs,N1,K,L).
create( Xs ,N,K,[ 0|L]) :- N1 is N + 1, create(Xs,N1,K,L).
它需要对零位置进行排序。 否则,更惯用 - 和神秘 -
create(Ps, N,K, L) :- findall(D, (
between(N,K,P),
( memberchk(P,Ps) -> D = -1 ; D = 0)), L).
无论订购如何,都能正常工作。