Матрицы - Lisp

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

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

Доброго дня, помогите решить задачу. Задана матрица А размера 5*5, состоящая из констант от 0 до 9. Установите процентное содержание каждой из этих констант в массиве А.

Решение задачи: «Матрицы»

textual
Листинг программы
(defun percentage (w
                   &aux
                   (v (loop for a in w nconc a))
                   (n (length v)))
  (loop for a in (sort (remove-duplicates v) #'<)
        collect `(,a ,(* (float (/ (count a v) n)) 100))))
 
> (percentage '((1 2 3 4 5) (0 4 5 2 3) (3 3 4 4 5) (5 5 0 0 1) (4 5 2 3 1)))
((0 12.0) (1 12.0) (2 12.0) (3 20.0) (4 20.0) (5 24.0))

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

В этом коде определенная функция с именем percentage, которая принимает аргумент w, который является списком списков целых чисел. Функция также имеет необязательный аргумент aux, который не используется в этом коде. Внутри функции percentage создается переменная v, которая инициализируется значением (loop for a in w nconc a). Это выражение создает список, объединяя все элементы каждого вложенного списка в w в один список. Затем создается переменная n, которая инициализируется значением (length v). Это выражение вычисляет длину списка v. Далее, в цикле loop перебираются элементы списка a, который получен после сортировки и удаления дубликатов из v с помощью функции sort и remove-duplicates соответственно. На каждой итерации цикла создается строка, которая представляет процентное соотношение числа элементов, соответствующих текущему элементу a, от общего числа элементов в v. Строка затем добавляется в результат с помощью функции collect. Наконец, функция percentage возвращает список результатов. Пример использования функции показывает, как она применяется к списку списков целых чисел ((1 2 3 4 5) (0 4 5 2 3) (3 3 4 4 5) (5 5 0 0 1) (4 5 2 3 1)). Результатом является список ((0 12.0) (1 12.0) (2 12.0) (3 20.0) (4 20.0) (5 24.0)), который представляет процентное соотношение каждого уникального элемента в исходном списке.

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


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

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

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