Поделить список на два: в первом числа, во втором символы - Lisp

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

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

Добрый день! Имеем исходный список например: (a 1 b 2 c 3 d 4) нужно его разделить на два чтобы в первый список вошли только числа а во второй только символы. т. е. 1) (1 2 3 4) 2) (a b c d) Имею вот такие наработки:
Листинг программы
  1. (defun f1 (sp)
  2. (cond ((null sp) nil)
  3. ((numberp (car sp)) )
  4. ((symbolp (car sp)) )
  5. )
  6. )
Но не знаю как сформировать сами списки( Заранее благодарен!

Решение задачи: «Поделить список на два: в первом числа, во втором символы»

textual
Листинг программы
  1. (defun task (lst)
  2.   (list  (remove-if 'symbolp lst) (remove-if-not 'symbolp lst)))
  3.  
  4. ==> task
  5.  
  6. (task '(a 1 b 2 c 3 d 4))
  7.  
  8. ==> ((1 2 3 4) (a b c d))

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

В коде определена функция task, которая принимает один аргумент lst. Внутри функции происходит следующее:

  1. Создается список, который содержит два элемента: первый элемент — это результат работы функции remove-if, второй элемент — это результат работы функции remove-if-not.
    • Элементы списка создаются с помощью функции list.
    • Функция remove-if применяется к переменной lst и возвращает новый список, в котором содержатся только те элементы, которые не являются символами.
    • Функция remove-if-not применяется к переменной lst и возвращает новый список, в котором содержатся только те элементы, которые являются символами.
  2. Результат работы функции task выводится на экран с помощью функции print.
    • В данном случае выводится список ((1 2 3 4) (a b c d)).

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


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

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

10   голосов , оценка 4 из 5

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

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

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