Мне нужно написать программу, которая возвращает новый список из данного списка со следующими критериями. Если член списка отрицательный или 0, он должен и это значение 3 раза в новый список. Если член положителен, он должен добавить значение 2 раза для этого списка. Например:Prolog напечатать значение как результат вместо истинного
goal: dt([-3,2,0],R).
R = [-3,-3,-3,2,2,0,0,0].
Я написал следующий код и он отлично работает для меня, но он возвращает true
как результат вместо R = [some_values]
Мой код:
dt([],R):- write(R). % end print new list
dt([X|Tail],R):- X =< 0, addNegavite(Tail,X,R). % add 3 negatives or 0
dt([X|Tail],R):- X > 0, addPositive(Tail,X,R). % add 2 positives
addNegavite(Tail,X,R):- append([X,X,X],R,Z), dt(Tail, Z).
addPositive(Tail,X,R):- append([X,X],R,Z), dt(Tail, Z).
Может быть кто-нибудь знает, как для печати R = []
вместо true
.
Спасибо, ваш ответ показывает, что мне все еще нужно узнать кое-что в Прологе. – kuldarim