Написать функцию, выполняющую преобразования списка - 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)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.625 из 5
Похожие ответы