Описать функцию, которая создавала бы список только из числовых элементов списка–аргумента. - Lisp

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

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

Описать функцию, которая создавала бы список только из числовых элементов списка–аргумента. Все функции нужно сделать используя примитивные функции, типо типа car, cdr, без использования lambda и прочих сложных функций.

Решение задачи: «Описать функцию, которая создавала бы список только из числовых элементов списка–аргумента.»

textual
Листинг программы
(defun task (lst)
  (cond ((null lst) nil)
        ((numberp (car lst)) (cons (car lst) (task (cdr lst))))
        (t (task (cdr lst)))))
 
 
==> TASK
 
(task '(1 a 2 b 3 c c c))
 
==> (1 2 3)

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

В коде определена функция с именем task. Она принимает в качестве аргумента lst, который является списком. Функция проверяет, является ли lst пустым списком. Если это так, то возвращается nil. В противном случае функция проверяет, является ли первый элемент списка числом с помощью функции numberp. Если это так, то этот элемент добавляется в начало результирующего списка, а оставшаяся часть списка передается в функцию task рекурсивно. Если первый элемент не является числом, то функция task вызывается рекурсивно для оставшейся части списка без первого элемента. В итоге получается список, содержащий только числовые элементы исходного списка. Например, при выполнении (task '(1 a 2 b 3 c c c)) результатом будет (1 2 3), так как все нечисловые элементы (a, b, c) отфильтровываются.

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


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

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

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