Создать новый список - Lisp

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

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

Задан список чисел. Создать новый список, в котором каждое значение поделено на максимальное значение исходного списка.Помогите, пожалуйста

Решение задачи: «Создать новый список»

textual
Листинг программы
(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.

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


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

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

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