Создать новый список - Lisp
Формулировка задачи:
Решение задачи: «Создать новый список»
(defn del-max [l] (let [mx (reduce max l)] (map #(if (zero? mx) 'infinity (/ % mx)) l))) (del-max [0 -1 -2 -3 -4 -5]) ==> (infinity infinity infinity infinity infinity infinity) (del-max [-1 -2 -3 -4 -5]) ==> (1 2 3 4 5) (del-max [1 2 3 4 5]) ==> (1/5 2/5 3/5 4/5 1)
Объяснение кода листинга программы
В данном коде определён новый функционал для списка, который выводит на экран максимальное значение из списка.
Если в списке нет максимального элемента или список пустой, то вернёт 'infinity.
Если есть максимальный элемент, то возвращает новый список, в котором каждый элемент списка делится на максимальное значение.
Когда мы применяем функцию del-max
к списку [0 -1 -2 -3 -4 -5]
, то получаем '(infinity infinity infinity infinity infinity infinity)
.
Это происходит потому, что 0 - это максимальное значение в данном списке. И когда мы делим каждый элемент списка на максимальное значение, то получаем infinity
.
Когда мы применяем функцию del-max
к списку [-1 -2 -3 -4 -5]
, то получаем [1 2 3 4 5]
.
Это происходит потому, что -1, -2, -3, -4 и -5 не являются максимальными значениями в данном списке. И когда мы делим каждый элемент списка на максимальное значение, то получаем натуральное число.
Когда мы применяем функцию del-max
к списку [1 2 3 4 5]
, то получаем [1/5 2/5 3/5 4/5 1]
.
Это происходит потому, что 5 - это максимальное значение в данном списке. И когда мы делим каждый элемент списка на максимальное значение, то получаем результат, который меньше 1.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д