Перемножение двух многочленов - Lisp
Формулировка задачи:
Помогите пожалуйста
написать программу перемножения двух многочленов от n переменных
. Например: (1 + 2 + 3) * (4 + 5 + 6) = 1*4 + 1*5 + 1*6 + 2*4 + 2*5 + 2*6 + 3*4 +3*5 + 3*6 = 90
По сути надо умножить каждый элемент одного списка на каждый другого и взять сумму этих произведений.
Решение задачи: «Перемножение двух многочленов»
textual
Листинг программы
(defun sum-product (w v) (loop for a in w sum (loop for b in v sum (* a b)))) > (sum-product '(1 2 3) '(4 5 6)) 90
Объяснение кода листинга программы
В данном коде представлена функция sum-product, которая принимает два аргумента w и v. Сначала происходит итерация по каждому элементу w с помощью цикла loop. Для каждого элемента a в w выполняется следующая инструкция, которая также является циклом loop. Он проходит по каждому элементу b из v и выполняет операцию умножения a b, затем результат суммируется. Таким образом, результатом работы функции sum-product будет являться сумма произведений всех пар соответствующих элементов из w и v. В данном примере функция вызывается с аргументами '(1 2 3) и '(4 5 6), результатом выполнения функции будет число 90.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д