В качестве входных данных у меня есть список чисел, и мне нужно сгенерировать новый список с элементами от N до N, удвоенными. Например:
?-double([1,2,3,4,5,6,7],2,L). returns L=[1,2,2,3,4,4,5,6,6,7] (in this case N=2)
?-double([1,2,3,4,5,6,7],3,L). returns L=[1,2,3,3,4,5,6,6,7] (in this case N=3)
Я придумал следующий код:
double(List, N, L) :- double(List, N, 1, L).
double([], N, Index, L).
double([H|T], N, Index, [H,H|L]) :-
Index =:= N,
double(T,N,1,L).
double([H|T], N, Index, [H|L]) :-
Index =\= N,
newIndex is Index + 1,
double(T,N,newIndex,L).
К сожалению, мой код возвращает false. Ребята, вы можете указать на ошибку? Спасибо!