Например, 3x^4 - 17x^2 - 3x + 5. Каждый член полинома может быть представлен как пара целых чисел (коэффициент, показатель степени). Сам полином представляет собой список таких пар, как [(3,4), (-17,2), (-3,1), (5,0)]
для полинома, как показано.
Нулевой многочлен 0 представлен пустым списком []
, так как в нем нет членов с ненулевыми коэффициентами.
Я хочу написать две функции для сложения и умножения двух входных полиномов с одинаковым представлением кортежа (коэффициент, показатель степени):
addpoly(p1, p2)
multpoly(p1, p2)
Тестовые случаи:
addpoly([(4,3),(3,0)], [(-4,3),(2,1)])
должен дать[(2, 1),(3, 0)]
addpoly([(2,1)],[(-2,1)])
должен дать[]
multpoly([(1,1),(-1,0)], [(1,2),(1,1),(1,0)])
должен дать[(1, 3),(-1, 0)]
Вот то, с чего я начал, но был полностью поражен!
def addpoly(p1, p2):
(coeff1, exp1) = p1
(coeff2, exp2) = p2
if exp1 == exp2:
coeff3 = coeff1 + coeff2
{4: 3, 2: 17, 1: 3, 0: 5}
. С такой структурой данных стало бы относительно легко получить доступ к терминам (или проверить их существование) в каждом многочлене, переданном функциям. Кроме того, это просто вопрос реализации того, что вы сделали бы, если бы делали это вручную с помощью карандаша и бумаги. - person martineau   schedule 20.08.2016collections.Counter
делаетaddpoly
тривиальной задачей - person VPfB   schedule 20.08.2016