Работы со списками - Lisp

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

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

Здравствуйте! Помогите с заданием: Для произвольного списка построить список той же длины, состоящий из атомов Т и NIL в зависимости от того, является ли соответствующий элемент исходного списка списком или атомом соответственно. Заранее спасибо!

Решение задачи: «Работы со списками»

textual
Листинг программы
  1. (defun task (lst &optional (r nil))
  2.   (if (null lst) r (task (cdr lst) (append r (list (listp (car lst)))))))
  3.  
  4. ==> task
  5.  
  6. (task '(1 2 3 (1) (2) (3)))
  7.  
  8. ==> (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

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

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

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