কম্পিউটার টিউটোরিয়াল

Python দিয়ে লিংকড লিস্ট আকারে দেওয়া দুটি পলিনোমিয়াল যোগ করার প্রোগ্রাম


মান লাগিয়ে, আমাদের দুটি পলিনোমিয়াল দেওয়া আছে এবং আমাদের তাদের যোগফল বের করতে হবে। পলিনোমিয়ালগুলো লিংকড লিস্ট হিসেবে রিপ্রেজেন্ট করা থাকবে; পলিনোমিয়ালের টার্মগুলো লিংকড লিস্ট নোড হিসেবে রিপ্রেজেন্ট করা থাকবে। প্রতিটি লিংকড লিস্ট নোডে থাকবে কোইফিশিয়েন্ট মান, পাওয়ার মান, এবং পরবর্তী লিংকড লিস্ট নোডের পয়েন্টার। আমাদের একটি তৃতীয় লিংকড লিস্ট রিটার্ন করতে হবে যা দুটি লিংকড লিস্ট পলিনোমিয়ালের যোগফল।

যেমন, ইনপুট যদি এমন হয়:

Python দিয়ে লিংকড লিস্ট আকারে দেওয়া দুটি পলিনোমিয়াল যোগ করার প্রোগ্রাম

1x^1 + 1x^2 = 0 এবং 2x^1 + 3x^0 = 0,

তবে আউটপুট হবে 3x^1 + 1x^2 + 3x^0 = 0

এটি সমাধান করতে আমরা নিচের ধাপগুলো অনুসরণ করব:

  • dummy := একটি নতুন পলিনোমিয়াল নোড
  • node := একটি নতুন পলিনোমিয়াল নোড
  • poly1 এবং poly2 খালি না হওয়া পর্যন্ত:
    • যদি poly1.power > poly2.power হয়, তবে:
      • node.next := poly1
      • node := poly1
      • poly1 := poly1.next
    • অন্যথায় যদি poly1.power < poly2.power হয়, তবে:
      • node.next := poly2
      • node := poly2
      • poly2 := poly2.next
    • অন্যথায়:
      • coef := poly1.coefficient + poly2.coefficient
      • যদি coef নন-জিরো হয়, তবে:
        • poly1 := poly1.next
        • poly2 := poly2.next
  • node.next := poly1 বা poly2
  • dummy.next রিটার্ন করুন

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশন দেখুন:

উদাহরণ

class polynomial:
    def __init__(self, coeff = 0, pow = 0, nxt = None):
        self.coefficient = coeff
        self.power = pow
        self.next = nxt
def create_poly(expression):
    head = None
    for element in expression:
        if head == None:
            head = polynomial(element[0], element[1])
        else:
            temp = head
            while temp.next != None:
                temp = temp.next
            if temp.next == None:
                temp.next = polynomial(element[0], element[1])
    return head
def show_poly(head):
    temp = head
    while temp.next != None:
        print(str(temp.coefficient) + 'x^' + str(temp.power), end = ' + ')
        temp = temp.next
    if temp.next == None:
        print(str(temp.coefficient) + 'x^' + str(temp.power), end=' = 0')
def solve(poly1, poly2):
    dummy = node = polynomial()
    while poly1 and poly2:
        if poly1.power > poly2.power:
            node.next = node = poly1
            poly1 = poly1.next
        elif poly1.power < poly2.power:
            node.next = node = poly2
            poly2 = poly2.next
        else:
            coef = poly1.coefficient + poly2.coefficient
            if coef: node.next = node = polynomial(coef, poly1.power)
            poly1 = poly1.next
            poly2 = poly2.next
    node.next = poly1 or poly2
    return dummy.next
poly1 = create_poly([[1,1], [1,2]])
poly2 = create_poly([[2,1], [3, 0]])
poly3 = solve(poly1, poly2)
show_poly(poly3)

ইনপুট

poly1 = create_poly([[1,1], [1,2]]) poly2 = create_poly([[2,1], [3, 0]])

আউটপুট

3x^1 + 1x^2 + 3x^0 = 0

  1. C++ প্রোগ্রাম লিংকড লিস্ট (Linked List) ব্যবহার করে রান লেথ এনকোডিং (Run Length Encoding) ইমপ্লিমেন্টেশন

  2. লিংকড লিস্ট ব্যবহার করে C++-এ দুটি পলিনোমিয়াল যোগ করা

  3. পাইথনে দুটি বড় সংখ্যা যোগ করা

  4. পাইথনে দুটি ম্যাট্রিক্স যোগ করা