Написать функцию, выполняющую преобразования списка - Lisp

Узнай цену своей работы

Формулировка задачи:

Добрый вечер, помогите пожалуйста с заданием: Написать функцию, выполняющую следующие преобразования списка: удаляются все повторения списка, но указываются позиции удаленных элементов. (a s d s a d a f a) -> ((a 1 5 7 9) (s 2 4) (d 3 6) f) большое спасибо

Решение задачи: «Написать функцию, выполняющую преобразования списка»

textual
Листинг программы
  1. (defun pos-list (l a &optional (p 0) (r nil))
  2.   (cond ((null l) r)
  3.         ((eq (car l) a) (pos-list (cdr l) a (+ p 1) (append r (list p))))
  4.         (t (pos-list (cdr l) a (+ p 1) r))))
  5.  
  6.  
  7.  
  8. ==> pos-list
  9.  
  10. (pos-list '(a b a c d a) 'a)
  11.  
  12. ==> (0 2 5)

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


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

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

8   голосов , оценка 4.625 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы