Функция: найти самое большое по модулю число, содержащееся в списке с подсписками - Lisp
Формулировка задачи:
сделать ф-цию, находящую наибольшее по модулю число, содержащееся в списке с подсписками.
Решение задачи: «Функция: найти самое большое по модулю число, содержащееся в списке с подсписками»
textual
Листинг программы
(defun task (lst) (apply 'max (mapcar 'abs (flatten lst)))) ==> TASK (task '(1 2 (((-6 5 2) 6) -2))) ==> 6
Объяснение кода листинга программы
В коде определена функция с именем «task», которая принимает в качестве аргумента список с подсписками. Функция должна найти самое большое по модулю число, содержащееся в списке с подсписками. Функция «task» использует следующие функции и операторы:
- (apply 'max (mapcar 'abs (flatten lst))) — Функция apply используется для применения функции max к списку, полученному с помощью функций mapcar и flatten. — Функция mapcar применяется к списку с подсписками и возвращает новый список, содержащий только абсолютные значения элементов исходного списка. — Функция flatten используется для преобразования списка с подсписками в одномерный список. — Функция max используется для поиска максимального элемента в списке. Таким образом, в данном коде функция task находит самое большое по модулю число, содержащееся в списке с подсписками. В данном примере список содержит число -6, которое является самым большим по модулю числом в данном списке. Поэтому функция task возвращает число 6.