Find the missing digit x from the given expression

06 May, 2022
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: 4Explanation: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: 2Explanation: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
Javascript
# 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 Codeif __name__ == '__main__':    # input expression    exp = "3x + 12 = 46"     print(MissingDigit(exp))
<script> // JavaScript program to find missing// digit x in expression let res = 0,x;let result = ""; function MissingDigit(exp){       // Split the expression to    // extract operands, operator    // and resultant    exp = exp.split(' ')     let first_operand = exp[0]    let operator = exp[1]    let second_operand = exp[2]    let resultant = exp[exp.length-1]     // If x is present in resultant    if(resultant.indexOf('x') != -1){        x = resultant        first_operand = parseInt(first_operand)        second_operand = parseInt(second_operand)         if(operator == '+')            res = first_operand + second_operand        else if(operator == '-')            res = first_operand - second_operand        else if(operator == '*')            res = first_operand * second_operand        else            res = Math.floor(first_operand / second_operand)    }      // If x in present in operands    else{         resultant = parseInt(resultant)         // If x in the first operand        if(first_operand.indexOf('x') != -1){             x = first_operand            second_operand = parseInt(second_operand)             if(operator == '+')                res = resultant - second_operand            else if(operator == '-')                res = resultant + second_operand            else if(operator == '*')                res = Math.floor(resultant / second_operand)            else                res = resultant * second_operand        }         // If x is in the second operand        else{             let x = second_operand            first_operand = parseInt(first_operand)             if(operator == '+')                res = resultant-first_operand            else if(operator == '-')                res = first_operand - resultant            else if(operator == '*')                res = Math.floor(resultant / first_operand)            else                res = Math.floor(first_operand / resultant)        }    }     res = res.toString()    let k = 0    for(let i of x){        if(i == 'x'){            result = res[k]            break        }        else            k = k + 1    }     return result}  // Driver Code // input expressionlet exp = "3x + 12 = 46" document.write(MissingDigit(exp))     // This code is contributed by shinjanpatra </script>
4
Time Complexity: O(L), where is the length of the equation.Auxiliary Space: O(1)
shinjanpatra
Mathematical
School Programming
Searching
Strings
Searching
Strings
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Merge two sorted arrays
Operators in C / C++
Sieve of Eratosthenes
Prime Numbers
Program to find GCD or HCF of two numbers
Python Dictionary
Reverse a string in Java
Arrays in C/C++
Introduction To PYTHON
Interfaces in Java