Удалить из заданного списка все числа - Scheme - Lisp

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

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

Здравствуйте. Помогите, пожалуйста, задачу решить. Нужно удалить из заданного списка все числа. Задача выполняется на языке Scheme. При этом считается, что списки имеют многоуровневую структуру. вот такая же задача на Scheme, но тут удаляются атомы. Только вот удаление чисел никак не получается прикрутить
(define myList '())
(set! myList (read))
(define func1 (lambda (x)
     (if (null? x)
          null
          (if (not(pair? (car x)))
              (func1(cdr x))
              (cons (func1 (car x)) (func1 (cdr x)))))))
(func1 myList)
Заранее, огромное спасибо!

Решение задачи: «Удалить из заданного списка все числа - Scheme»

textual
Листинг программы
;; Лисп
 
(defun del-num (lst)
  (cond ((null lst) nil)
          ((numberp (car lst)) (del-num (cdr lst)))
          (t (cons (car lst) (del-num (cdr lst))))))
 
;; Sheme
 
(define del-num (lambda (lst)
  (cond ((null? lst) nil)
        ((number? (first lst)) (del-num (rest lst)))
        ((cons (first lst) (del-num (rest lst)))))))

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

В коде представлена функция del-num, которая удаляет все числа из заданного списка. Функция написана на двух языках программирования: Лисп и Sheme (этот язык является диалектом Лиспа). Код функции на обоих языках совпадает, за исключением различий в синтаксисе. Вот список действий, которые выполняются в функции:

  1. Если список пуст, возвращается nil (для Лиспа) или nil (для Sheme).
  2. Если первый элемент списка является числом, функция вызывается рекурсивно для оставшейся части списка.
  3. Если первый элемент списка не является числом, в результат добавляется этот элемент, а затем вызывается функция рекурсивно для оставшейся части списка.

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


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

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

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