Поделить список на два: в первом числа, во втором символы - 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)).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д