Поделить список на два: в первом числа, во втором символы - Lisp
Формулировка задачи:
Добрый день! Имеем исходный список например: (a 1 b 2 c 3 d 4) нужно его разделить на два чтобы в первый список вошли только числа а во второй только символы. т. е. 1) (1 2 3 4) 2) (a b c d)
Имею вот такие наработки:
Но не знаю как сформировать сами списки( Заранее благодарен!
(defun f1 (sp) (cond ((null sp) nil) ((numberp (car sp)) ) ((symbolp (car sp)) ) ) )
Решение задачи: «Поделить список на два: в первом числа, во втором символы»
textual
Листинг программы
(defun task (lst) (list (remove-if 'symbolp lst) (remove-if-not 'symbolp lst))) ==> task (task '(a 1 b 2 c 3 d 4)) ==> ((1 2 3 4) (a b c d))
Объяснение кода листинга программы
В коде определена функция task, которая принимает один аргумент lst. Внутри функции происходит следующее:
- Создается список, который содержит два элемента: первый элемент — это результат работы функции remove-if, второй элемент — это результат работы функции remove-if-not.
- Элементы списка создаются с помощью функции list.
- Функция remove-if применяется к переменной lst и возвращает новый список, в котором содержатся только те элементы, которые не являются символами.
- Функция remove-if-not применяется к переменной lst и возвращает новый список, в котором содержатся только те элементы, которые являются символами.
- Результат работы функции task выводится на экран с помощью функции print.
- В данном случае выводится список ((1 2 3 4) (a b c d)).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д