如何在列表末尾添加指定数量的元素,而无需在Prolog中追加

问题描述 投票:0回答:1

我正在基于一个here来探讨一个Prolog问题。

这个问题本质上是在询问如何在列表末尾添加元素。我想更进一步,请问如何增加元素X的次数。我在写代码,有点迷路。这是我所拥有的:

add_tail([],X, 0, [X]).
add_tail([H|T],X, C, [H|T2]):- NewC is C - 1, add_tail(T,X, NewC, T2).

我正在测试:add_tail([1,2,3,4,5,6], 4, 2, X),但是,根据放置新计数(C)的位置,我得到一个错误。

任何意见和建议将不胜感激!

list prolog add
1个回答
0
投票

如果您要在列表的末尾添加两个额外的4,那么这就是您所需要的:

add_tail([], _, 0, []).
add_tail([], X, C, [X|T2]) :- C > 0, C2 is C - 1, add_tail([], X, C2, T2).
add_tail([H|T], X, C, [H|T2]):- add_tail(T, X, C, T2).

现在调用?- add_tail([1,2,3,4,5,6], 4, 2, X).[1, 2, 3, 4, 5, 6, 4, 4]X统一。

© www.soinside.com 2019 - 2024. All rights reserved.