Написать функцию, выполняющую преобразования списка - Lisp
Формулировка задачи:
Добрый вечер, помогите пожалуйста с заданием:
Написать функцию, выполняющую следующие преобразования списка: удаляются все повторения списка, но указываются позиции удаленных элементов. (a s d s a d a f a) -> ((a 1 5 7 9) (s 2 4) (d 3 6) f)
большое спасибо
Решение задачи: «Написать функцию, выполняющую преобразования списка»
textual
Листинг программы
(defun pos-list (l a &optional (p 0) (r nil)) (cond ((null l) r) ((eq (car l) a) (pos-list (cdr l) a (+ p 1) (append r (list p)))) (t (pos-list (cdr l) a (+ p 1) r)))) ==> pos-list (pos-list '(a b a c d a) 'a) ==> (0 2 5)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д