Удалить из заданного списка все числа - 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 (этот язык является диалектом Лиспа). Код функции на обоих языках совпадает, за исключением различий в синтаксисе.
Вот список действий, которые выполняются в функции:
- Если список пуст, возвращается
nil
(для Лиспа) илиnil
(для Sheme). - Если первый элемент списка является числом, функция вызывается рекурсивно для оставшейся части списка.
- Если первый элемент списка не является числом, в результат добавляется этот элемент, а затем вызывается функция рекурсивно для оставшейся части списка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д