Работы со списками - Lisp
Формулировка задачи:
Здравствуйте! Помогите с заданием: Для произвольного списка построить список той же длины, состоящий из атомов Т и NIL в зависимости от того, является ли соответствующий элемент исходного списка списком или атомом соответственно. Заранее спасибо!
Решение задачи: «Работы со списками»
textual
Листинг программы
(defun task (lst &optional (r nil)) (if (null lst) r (task (cdr lst) (append r (list (listp (car lst))))))) ==> task (task '(1 2 3 (1) (2) (3))) ==> (NIL NIL NIL T T T)
Объяснение кода листинга программы
В коде определён функционал для работы со списками.
- (defun task (lst &optional (r nil))). Определяет функцию с именем task.
- (if (null lst) r (task (cdr lst) (append r (list (listp (car lst))))). Если список пустой, то возвращает r, иначе рекурсивно вызывает себя для обработки оставшейся части списка, при этом дополняя результат r элементом списка, который в свою очередь является списком.
- (task '(1 2 3 (1) (2) (3))). Вызов функции task для списка (1 2 3 (1) (2) (3)).
- Результат (NIL NIL NIL T T T).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д