Программа формирования вектора - Lisp

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

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

Дана матрица В размера 5*7. Составить программу формирования вектора, элементы которого равны сумме элементов столбцов матрицы В.

Решение задачи: «Программа формирования вектора»

textual
Листинг программы
(defun task (matr)
  (mapcar #'(lambda (x) (apply '+ x)) (apply 'mapcar (cons 'list matr))))
 
==> task
 
(task '((1 2 3) (4 5 6) (7 8 9)))
 
==> (12 15 18)

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

В данном коде определен функционал, который реализует задачу по формированию вектора.

  1. В строке с определением функции (defun) задается название функции — task. В качестве параметра функции указывается matr — матрица, с которой будет производиться работа.
  2. В следующей строке используется функция mapcar, которая применяется к каждому элементу матрицы. В качестве анонимной функции (lambda) задается выражение (apply '+ x), которое означает, что каждый элемент матрицы будет последовательно суммироваться с числом 1.
  3. Результатом работы функции mapcar будет новый массив, который содержит результаты суммирования каждого элемента исходной матрицы с числом 1.
  4. В конце функции task применяется функция apply, которая позволяет выполнить функцию mapcar сразу для всей матрицы, а не для каждого элемента по отдельности.
  5. Результатом работы функции task будет вектор, полученный в результате суммирования каждого элемента матрицы с числом 1. Пример вызова функции task с матрицей '((1 2 3) (4 5 6) (7 8 9)): (task '((1 2 3) (4 5 6) (7 8 9))) -> (12 15 18)

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


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

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

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