Я пытаюсь удалить элементы с четными индексами. Вот мой код:Пролог. Удалите даже индексы из списка
DOMAINS
list = integer*
PREDICATES
remove(list,list)
CLAUSES
remove([],[]).
remove([_,H|T1], [H|T2]):-
remove(T1, T2).
GOAL
remove([1,2,3,4,5], NewList).
Я скучаю первый элемент в списке, и сохранить второе место в новом списке NewList
. Но он работает только тогда, когда длина списка равна числу.
Что мне не хватает? Может быть, мой подход неправильный?
спасибо. Я добавил 'remove ([H | T1], []).' Базовый случай, но теперь у меня есть '3 решения: NewList = [], NewList = [2], NewList = [2,4]', когда список ' [1,2,3,4,5] '. – HelterShelter
вы сказали, что «список с одним элементом: вы закончили, результат - это тот элемент», но если этот элемент один, то это даже элемент, и мне нужно его удалить. Я прав? – HelterShelter
т. Е. Мой базовый регистр 'remove ([H | T1], [])' прав? Почему я получаю 3 ответа? если подсчет начинается с 1, то я использую 'remove ([H | T1], [H])' базовый случай, как вы сказали – HelterShelter