Navbar menu

HackerRank Python Solution - Classes - Dealing with Complex Numbers

  • For this challenge, you are given two complex numbers, and you have to print the result of their addition, subtraction, multiplication, division, and modulus operations.
  • The real and imaginary precision parts should be correct up to two decimal places.
Input Format:

One line of input: The real and imaginary part of a number separated by a space.

Output Format:
  • For two complex numbers C and D, the output should be in the following sequence on separate lines:
    • C + D
    • C - D
    • C * D
    • C / D
    • mod(C)
    • mod(D)
  • For complex numbers with non-zero real (A) and complex part (B), the output should be in the following format: A+Bi
  • Replace the plus symbol (+) with a minus symbol (-) when B < 0.
  • For complex numbers with a zero complex part i.e. real numbers, the output should be: A+0.00i
  • For complex numbers where the real part is zero and the complex part (B) is non-zero, the output should be: 0.00+Bi
Sample Input:

2 1
5 6
Sample Output:

7.00+7.00i
-3.00-5.00i
4.00+17.00i
0.26-0.11i
2.24+0.00i
7.81+0.00i
Concept:
  • Python is a fully object-oriented language like C++, Java, etc.
  • Methods with a double underscore before and after their name are considered as built-in methods. They are used by interpreters and are generally used in the implementation of overloaded operators or other built-in functionality.
__add__-> Can be overloaded for + operation

__sub__ -> Can be overloaded for - operation

__mul__ -> Can be overloaded for * operation
Solution:

class Complex(object):
    def __init__(self, real, imaginary):
        self.real = real
        self.imaginary = imaginary
        
    def __add__(self, no):
        real = self.real + no.real
        imaginary = self.imaginary + no.imaginary
        return Complex(real,imaginary)
    
    def __sub__(self, no):
        real = self.real - no.real
        imaginary = self.imaginary - no.imaginary
        return Complex(real,imaginary)
    
    def __mul__(self, no):
        imaginary = self.real * no.imaginary + self.imaginary * no.real
        real = self.real * no.real - self.imaginary * no.imaginary 
        return Complex(real,imaginary)

    def __truediv__(self, no):
        x=no.real**2+no.imaginary**2
        real=(self.real*no.real+self.imaginary*no.imaginary)/x
        imaginary=(-no.imaginary*self.real+self.imaginary*no.real)/x
        return Complex(real,imaginary)

    def mod(self):
        return Complex(pow(self.real**2+self.imaginary**2, 0.5), 0)
        
    def __str__(self):
        if self.imaginary == 0:
            result = "%.2f+0.00i" % (self.real)
        elif self.real == 0:
            if self.imaginary >= 0:
                result = "0.00+%.2fi" % (self.imaginary)
            else:
                result = "0.00-%.2fi" % (abs(self.imaginary))
        elif self.imaginary > 0:
            result = "%.2f+%.2fi" % (self.real, self.imaginary)
        else:
            result = "%.2f-%.2fi" % (self.real, abs(self.imaginary))
        return result
Disclaimer: The problem statement is given by hackerrank.com but the solution is generated by the Geek4Tutorial admin. If there is any concern regarding this post or website, please contact us using the contact form. Thank you!

No comments:

Post a Comment