Допустим, у меня есть список: a b a a a c e
.Я хочу избавиться от всех соседних дубликатов, то есть двух а в середине.Таким образом, список становится a b a c e
.
Алгоритм, который я имею в виду, имеет следующий вид:
- Проверьте, равно ли текущее значение следующему значению,
(equal? (car lst) (car (cdr lst)))
они равны, тогда я хочу пропустить дублирующий элемент, но я не знаю, как добиться этого поведения в схеме?Любая идея?
- Если они не равны, продолжайте обходить список.
Кстати, есть ли способ реализовать итерационный цикл for
в схеме для этих типов задач?Потому что я чувствую, что рекурсия просто излишня для этой простой проблемы.
Спасибо,