Программа формирования вектора - 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)
Объяснение кода листинга программы
В данном коде определен функционал, который реализует задачу по формированию вектора.
- В строке с определением функции (defun) задается название функции — task. В качестве параметра функции указывается matr — матрица, с которой будет производиться работа.
- В следующей строке используется функция mapcar, которая применяется к каждому элементу матрицы. В качестве анонимной функции (lambda) задается выражение (apply '+ x), которое означает, что каждый элемент матрицы будет последовательно суммироваться с числом 1.
- Результатом работы функции mapcar будет новый массив, который содержит результаты суммирования каждого элемента исходной матрицы с числом 1.
- В конце функции task применяется функция apply, которая позволяет выполнить функцию mapcar сразу для всей матрицы, а не для каждого элемента по отдельности.
- Результатом работы функции 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)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д