Сортировка списка по типу элементов (рекурсивная реализация) - Lisp

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

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

Создать рекурсивную функцию, которая сортирует список, собрав вместе элементы одних типов (целые числа, действительные числа, символы, списки). Спасибо. например
$ (myfunction (1 56.7 `(99 6 0) р 89 30.8 `(12 89 6) 0 gh))
(1 89 0 56.7 30.8 р gh (99 6 0) (12 89 6))

Решение задачи: «Сортировка списка по типу элементов (рекурсивная реализация)»

textual
Листинг программы
(defun reorg (lst)
  (append (remove-if-not 'fixedp lst)
          (remove-if-not 'floatp lst)
          (remove-if-not 'symbolp lst)
          (remove-if-not 'listp lst)))
  
    
 
==> REORG
 
(reorg '(1 56.7 (99 6 0) р 89 30.8 (12 89 6) 0 gh))
 
==> (1 89 0 56.7 30.8 Р GH (99 6 0) (12 89 6))

Объяснение кода листинга программы

В коде реализована рекурсивная функция reorg, которая сортирует список lst по типу элементов. Вот список из 20 элементов, оформленных в виде названий переменных и их значений:

  1. lst — исходный список
  2. fixedp — тип элементов, которые нужно удалить из списка
  3. floatp — тип элементов, которые нужно удалить из списка
  4. symbolp — тип элементов, которые нужно удалить из списка
  5. listp — тип элементов, которые нужно удалить из списка
  6. append — операция добавления элементов в список
  7. remove-if-not — операция удаления элементов из списка, которые не соответствуют заданному условию
  8. (1 56.7 (99 6 0) р 89 30.8 (12 89 6) 0 gh) — исходный список, переданный в функцию reorg
  9. (1 89 0 56.7 30.8 Р GH (99 6 0) (12 89 6)) — результат работы функции reorg, отсортированный список по типу элементов

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


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

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

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