Сортировка списка по типу элементов (рекурсивная реализация) - 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 элементов, оформленных в виде названий переменных и их значений:
lst
— исходный списокfixedp
— тип элементов, которые нужно удалить из спискаfloatp
— тип элементов, которые нужно удалить из спискаsymbolp
— тип элементов, которые нужно удалить из спискаlistp
— тип элементов, которые нужно удалить из спискаappend
— операция добавления элементов в списокremove-if-not
— операция удаления элементов из списка, которые не соответствуют заданному условию(1 56.7 (99 6 0) р 89 30.8 (12 89 6) 0 gh)
— исходный список, переданный в функциюreorg
(1 89 0 56.7 30.8 Р GH (99 6 0) (12 89 6))
— результат работы функцииreorg
, отсортированный список по типу элементов
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д