В процессе обучения Пролога, я пытаюсь решить следующую задачу, используя аккумуляторы:Проблемы с аккумуляторами в прологе
Написать предикат addone2 / чей первый аргумент списка целых чисел, а второй аргумент список целых чисел, полученных добавлением 1 к каждому целому числу в первом списке. Например, запрос
addone([1,2,7,2],X).
должен дать
X = [2,3,8,3].
Я создал следующий код:
addone([], _).
addone([E|Tail], [R|Rs]) :-
NewE is E+1,
append([R|Rs], [NewE], NewRs),
addone(Tail, NewRs).
Но это не работает. Может кто-нибудь сказать мне, почему? Итак, как я могу использовать аккумуляторы в Prolog?
Спасибо!
Спасибо за помощь Фрэнк! Не сейчас об этом «трюке» без добавления списка. Также спасибо anthares за исправление моего базового футляра! –
Спасибо, Фрэнк! Этот трюк не очевиден и очень удобен! – ProfVersaggi