Answer to Question #189842 in Python for Hari nadh babu

Question #189842

Add two polynomials

Given two polynomials A and B, write a program that adds the given two polynomials A and B

Output

Print the addition of polynomials A and B.

If the degree of polynomial is zero and the constant term is also zero, then just print 0 to represent the polynomial.

For term Cix^Pi, if the coefficient of the term Ci is 1, simply print x^Pi instead of 1x^Pi.Explanation

Test Case 1:-

Input:-

6

0 -20

1 23

2 30

3 19

4 6

5 17

9

0 -100

5 -89

6 -20

7 -1

1 20

2 4

3 99

4 -45

8 12

Output:-

12x^8 - x^7 - 20x^6 - 72x^5 - 39x^4 + 118x^3 + 34x^2 + 43x - 120

Note :- Need Space between - and + operators

Test Case 2:-

Input:-

4

0 5

1 0

2 10

3 6

3

0 1

1 2

2 4

Output :-

6x^3 + 14x^2 + 2x + 6

Note:- Need Space between - and + operators

Test Case 3:-

Input:-

5

0 -2

3 6

4 7

1 -3

2 -1

5

0 1

1 2

2 -4

3 3

4 5

Output:-

12x^4 + 9x^3 - 5x^2 - x - 1

Note:- Need Space between - and + operators

We need all test cases can be came when code was run. I want exact outputs for all test cases


1
Expert's answer
2021-05-07T01:52:54-0400
def check_polinom(polinom):
        checked = []
        while polinom:
                tmp = polinom.pop(0)
                if polinom:
                        for i in range(len(polinom)-1, -1, -1):
                                if polinom[i][0] == tmp[0]:
                                        tmp[1] += polinom[i][1]
                                        polinom.pop(i)
                checked.append(tmp)
        return checked


def add_polinoms(pol_1, pol_2):
        added = []
        while pol_1 or pol_2:
                if pol_1:
                        tmp = pol_1.pop(0)
                        for i in range(len(pol_2)):
                                if pol_2[i][0] == tmp[0]:
                                        tmp[1] += pol_2[i][1]
                                        pol_2.pop(i)
                                        break
                else:
                        tmp = pol_2.pop(0)


                added.append(tmp)
        added.sort(reverse=True)
        return(added)


def print_polinom(polinom):
        s = ''
        if polinom:
                if polinom[0][1] < 0:
                        s += '-'
                        polinom[0][1] = -polinom[0][1]
                if polinom[0][1] == 1:
                        if polinom[0][0] == 0:
                                s += str(polinom[0][1])
                        elif polinom[0][0] == 1:
                                s += 'x'
                        else:
                                s += 'x^' + str(polinom[0][0])
                else:
                        if polinom[0][0] == 1:
                                s += str(polinom[0][1]) + 'x'
                        elif polinom[0][0] == 0:
                                s += str(polinom[0][1])
                        else:
                                s += str(polinom[0][1]) + 'x^' + str(polinom[0][0])                        
                polinom.pop(0)
        for el in polinom:
                if el[1] == 0:
                        continue
                elif el[1] < 0:
                        s += ' - '
                        el[1] = -el[1]
                        
                else:
                        s += ' + '
                if el[1] == 1:
                        if el[0] == 0:
                                s += str(el[1])
                        elif el[0] == 1:
                                s += 'x'
                        else:
                                s += 'x^' + str(el[0])
                else:
                        if el[0] == 1:
                                s += str(el[1]) + 'x'
                        elif el[0] == 0:
                                s += str(el[1])
                        else:
                                s += str(el[1]) + 'x^' + str(el[0])
        print(s)


def input_data():
        while True:
                try:
                        n = int(input())
                        break
                except:
                        print('enter an integer N')
                        continue
        a = list()
        i = 1
        while n > i-1:
                try:
                        tmp = list(map(int,(input()).split()))
                        if len(tmp) != 2:
                                print('enter two space separated integers')
                                continue
                        a.append(tmp)
                        i += 1
                except:
                        print('enter two space separated integers')


        return a




a = check_polinom(input_data())
b = check_polinom(input_data())
c = add_polinoms(a,b)
print_polinom(c)

Need a fast expert's response?

Submit order

and get a quick answer at the best price

for any assignment or question with DETAILED EXPLANATIONS!

Comments

Assignment Expert
07.05.21, 14:32

Dear Hari nadh babu, You're welcome. We are glad to be helpful. If you liked our service please press like-button beside answer field. Thank you!

Hari nadh babu
07.05.21, 10:27

Awesome! Thank u

Leave a comment

LATEST TUTORIALS
New on Blog
APPROVED BY CLIENTS