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

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

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

Прямоугольная таблица задана списком, каждый элемент которой представляет собой список с элементами таблицы по строкам, например, ((1 2 3 0) (2 0 4 5) (5 0 0 0) (6 7 8 9)). Удалить из заданного списка все списки. Код верный, но я не знаю куда вставить список, чтобы проверить, как он очищается.
(define del-num (lambda (lst)
  (cond ((null? lst) nil)
        ((number? (first lst)) (del-num (rest lst)))
        ((cons (first lst) (del-num (rest lst)))))))

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

textual
Листинг программы
(define del-num (lambda (lst)
  (cond ((null? lst) ())
        ((number? (car lst)) (del-num (cdr lst)))
        ((cons (car lst) (del-num (cdr lst)))))))
 
(display (del-num '((1 2 3 0) (2 0 4 5) (5 0 0 0) (6 7 8 9))))

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

В данном коде представлена реализация функции del-num, которая принимает в качестве аргумента список lst и возвращает новый список, в котором удалены все вложенные списки, содержащие в качестве первого элемента число. Функция реализована с использованием рекурсии и конструкции cond, позволяющей проверить, является ли первый элемент списка числом. Если это так, то рекурсивно вызывается функция del-num для оставшейся части списка. Если же первый элемент не является числом, то он добавляется в новый список. В итоге, после удаления всех вложенных списков, содержащих в качестве первого элемента число, функция возвращает новый список. Обратите внимание, что в данном коде нет использования функции display для вывода значений переменных. Возможно, в представленном вами коде были пропущены некоторые фрагменты.

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


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

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

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