Find the missing digit x from the given expression

Given an alphanumeric string, consisting of a single alphabet X, which represents an expression of the form:

A operator B = C
where A, B and C denotes integers and the operator can be either of +, -, * or /

The task is to evaluate the missing digit X present in any of the integers A, B and C such that the given expression holds to be valid.

Examples:

Input: S = “3x + 12 = 46”
Output: 4
Explanation:
If we subtract 12 from 46, we will get 34.
So, on comparing 3x and 34. the value of x = 4



Input: S = “4 – 2 = x”
Output: 2
Explanation:
After solving the equation, the value of x = 2.

Approach: Follow the steps below to solve the problem:

  • Split the string to extract the two operands, operator and the resultant.
  • Check if X is present in the resultant or not. If so, then compute the value of the resultant by applying operations on the first operand and second operand with the operator.
  • Otherwise, if X is not present in the resultant. Then check if X is present in the first operand. If so, then apply the operation on the second operand and resultant with the operator.
  • Otherwise, if X is not present in the first operand also. Then check if X is present in the second operand. If so, then apply the operation on the first operand and resultant with the operator.

Below is the implementation of the above approach:

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to find missing
# digit x in expression
  
  
def MissingDigit(exp):
    
    # Split the expression to
    # extract operands, operator
    # and resultant
    exp = list(exp.split())
  
    first_operand = exp[0]
    operator = exp[1]
    second_operand = exp[2]
    resultant = exp[-1]
  
    # If x is present in resultant
    if 'x' in resultant:
        x = resultant
        first_operand = int(first_operand)
        second_operand = int(second_operand)
  
        if operator == '+':
            res = first_operand + second_operand
        elif operator == '-':
            res = first_operand - second_operand
        elif operator == '*':
            res = first_operand * second_operand
        else:
            res = first_operand // second_operand
  
     # If x in present in operands
    else:
  
        resultant = int(resultant)
  
        # If x in the first operand
        if 'x' in first_operand:
  
            x = first_operand
            second_operand = int(second_operand)
  
            if operator == '+':
                res = resultant - second_operand
            elif operator == '-':
                res = resultant + second_operand
            elif operator == '*':
                res = resultant // second_operand
            else:
                res = resultant * second_operand
  
        # If x is in the second operand
        else:
  
            x = second_operand
            first_operand = int(first_operand)
  
            if operator == '+':
                res = resultant-first_operand
            elif operator == '-':
                res = first_operand - resultant
            elif operator == '*':
                res = resultant // first_operand
            else:
                res = first_operand // resultant
  
    res = str(res)
    k = 0
    for i in x:
        if i == 'x':
            result = res[k]
            break
        else:
            k = k + 1
  
    return result
  
  
# Driver Code
if __name__ == '__main__':
    # input expression
    exp = "3x + 12 = 46"
  
    print(MissingDigit(exp))

chevron_right


Output:

4

Time Complexity: O(L), where is the length of the equation.
Auxiliary Space: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.