Работы со списками - 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)

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

В коде определён функционал для работы со списками.

  1. (defun task (lst &optional (r nil))). Определяет функцию с именем task.
  2. (if (null lst) r (task (cdr lst) (append r (list (listp (car lst))))). Если список пустой, то возвращает r, иначе рекурсивно вызывает себя для обработки оставшейся части списка, при этом дополняя результат r элементом списка, который в свою очередь является списком.
  3. (task '(1 2 3 (1) (2) (3))). Вызов функции task для списка (1 2 3 (1) (2) (3)).
  4. Результат (NIL NIL NIL T T T).

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


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

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

14   голосов , оценка 3.714 из 5