Nabazgrałem program który mnoży wielomiany i podaje wynik w postaci listy
def multiply_two_polynomials(A, B):
return_polynomial = (len(A) + len(B) - 1)*[int(0)]
for i in range(len(A)):
for j in range(len(B)):
return_polynomial[i+j] += A[i]*B[j]
return return_polynomial
def multiply(polynomialList):
if len(polynomialList) < 2:
return 0
elif len(polynomialList) == 2:
return multiply_two_polynomials(polynomialList[0], polynomialList[1])
else:
polynomialList[-2] = multiply_two_polynomials(polynomialList[-1], polynomialList[-2])
polynomialList.pop()
return multiply(polynomialList)
polynomial = []
print("Podaj ilosc wielomianow: ")
for i in range(int(input())):
print("Podaj stopien " + str(i + 1) + ". wielomianu: ")
polynomial.append([])
for j in range(int(input()) + 1):
print("Podaj " + str(j + 1) + ". wspolczynnik " + str(i + 1) + ". wielomianu: ")
polynomial[i].append(int(input()))
print(multiply(polynomial))
czy ten kod jest okej? Bo działa, ale dziwnie mi wygląda linijka
return_polynomial = (len(A) + len(B) - 1)*[int(0)]
Lepiej napisać
polynomialList.pop()
return multiply(polynomialList)
czy może
return multiply(polynomialList[:len(polynomialList)-1])
? Czy może jeszcze coś lepszego jest? I nie chodzi mi o czytelność tylko możliwie największą wydajność. Gdzie mogę sprawdzić jakie rozwiązania jaką dokładnie mają wydajność? Bo podejrzewam że często mogę się spotkać z problemem który ma kilka rozwiązań, a które jest lepsze nie jest oczywiste