Итак, моя проблема в том, что у меня есть предикат, который представляет собой repeatte_el (El, N, L), в котором El является элементом, N - количество повторений, а L - список, содержащий этот элемент, повторенный N раз.
Моя проблема в том, что вместо того, чтобы повторять элемент, он дает false, и я не понимаю, почему.
Пример:
Мой вывод:
?- repete_el(a,3,L).
false
Правильный вывод:
?- repete_el(a,3,L).
L = [a,a,a].
Программа:
repete_el(El,0,[]) :- !.
repete_el(El,N,L) :- repete_el(El,N,L,[],N).
repete_el(El,N,L,L2) :- length(L2,C),
C =< N,
append(L2,[N],NL),
repete_el(El,N,L,NL).
Кстати, я могу сделать это только итеративно.