Написать функцию, выполняющую преобразования списка - 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)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д