Перемножение двух многочленов - 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.

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


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

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

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