Проверка "состава" списка XLisp

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

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

Необходимо проверить является ли список списком чисел или нет.
(defun list-check (list)
    (cond
        ((null list) "Yes")
        ((numberp (car list)) (list-check (cdr list)))
        ((not (numberp (car list))) "No")
    )
)
Как "оптимизировать" эту функцию,чтобы она работала и со вложенными списками?

Решение задачи: «Проверка "состава" списка XLisp»

textual
Листинг программы
(defun list-check (lst)
  (cond
    ( (atom lst)(numberp lst))
    ( (null (cdr lst)) (list-check (car lst)))
    (T(and (list-check (car lst))
           (list-check (cdr lst))))))

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

В данном коде определена функция list-check, которая проверяет, является ли элемент списка XLisp корректным. Код реализован с использованием условной конструкции cond. Список проверки имеет следующую структуру:

  1. Проверка atom lst - если элемент списка является атомом (не является списком), выполняется проверка numberp lst (является ли элемент списка числом).
  2. Проверка null (cdr lst) - если элемент списка, который находится в текущем узле, является пустым списком (null), то рекурсивно вызывается функция list-check для элемента списка, находящегося в car (головном узле).
  3. Если элемент списка не является пустым списком (null), то выполняется рекурсивный вызов функции list-check для элемента списка, находящегося в car (головном узле), и элемента списка, находящегося в cdr (хвостовом узле). Код функции:
  4. (defun list-check (lst)
  5. (cond
  6. ( (atom lst)(numberp lst))
  7. ( (null (cdr lst)) (list-check (car lst)))
  8. (T(and (list-check (car lst))
  9.    (list-check (cdr lst))))))

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


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

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

12   голосов , оценка 4.167 из 5
Похожие ответы