Удалить из данного списка списков все, длина которых больше заданного числа, с помощью REMOVE-IF[-NOT] - Lisp
Формулировка задачи:
Удалить из данного списка списков все, длина которых больше заданного числа, с помощью REMOVE-IF[-NOT].
Решение задачи: «Удалить из данного списка списков все, длина которых больше заданного числа, с помощью REMOVE-IF[-NOT]»
textual
Листинг программы
- (defun task (lst n)
- (remove-if #'(lambda (x) (> (length x) n)) lst))
- ==> task
- (task '((1) (1 2) (1 2 3) (1 2 3 4) (5 6) (7 8) nil) 3)
- ==> ((1) (1 2) (1 2 3) (5 6) (7 8) NIL)
Объяснение кода листинга программы
В коде определена функция с именем task. Она принимает два аргумента: lst — список списков, и n — число. Функция использует функцию remove-if с лямбда-выражением в качестве аргумента. Лямбда-выражение (#'(lambda (x) (> (length x) n))) определяет условие удаления: если длина списка больше n, то список удаляется. В качестве списка для удаления используется lst. Результатом работы функции является новый список без длинных списков. На примере ((1) (1 2) (1 2 3) (1 2 3 4) (5 6) (7 8) nil) и n=3, результатом будет ((1) (1 2) (1 2 3) (5 6) (7 8) nil).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д