Infosys InfyTQ Practice Problem – 1 | Four Digit OTP

Infosys InfyTQ Practice Problem – 1 | Four Digit OTP

In this post, we will see one practice problem which can be useful for Infosys Infytq coding exam preparation.

Problem Statement: You will be given a number in the form of the string, extract out digits at odd index then square and merge them. The first 4 digits will be the required OTP which shows as output. If 4 digit OTP is not generated then give output -1.

Sample Test Cases:

Input 1: '34567'
Output 1: 1636

Input 2: '0123'
Output 2: -1

Input 3: '012345'
Output 3: 1925

Input 4: '54892356'
Output 4: 1681

Approach : You have to pick an odd index integer from the string then take a square of it and concatenate to each other. The final output should be the first 4 digits of it. If 4 digit OTP is not possible to generate then give output as -1.

Now let’s see the different ways to write the code for this:

Code 1: Using simple for loop with range() built-in function.

# Code : 1

if __name__ == "__main__" :

    # Taking input from user
    input_string = input()

    # Empty string
    otp_string = ""

    # loop run from 0 to length of string - 1
    for i in range(len(input_string)) :

        # check if i is odd or not
        # if odd then proceed with square
        # and concatenation
        if i % 2 :
            
            # Converting string to integer
            # and then doing the square of it
            num_square = int(input_string[i]) ** 2

            # Concatenating the num_square values
            # with otp_string values
            otp_string += str(num_square)

        # if length of otp_string will become
        # greater than or equal to 4 then
        # print 4 digit answer and
        # break out of the loop
        if len(otp_string) >= 4 :
            
            print(otp_string[ : 4])
            break

    # if for loop runs successfully without break
    # then that means otp_string with length 4
    # is not possible so then prints -1
    # as an output
    else:
        print("-1")
        

Code 2: Using for loop with range() built-in function step concept.

# Code : 2

# Main Code
if __name__ == "__main__" :

    # Taking input from user
    input_string = input()

    # Empty string
    otp_string = ""

    # Iterating from 1 to length of input string - 1
    # with step of 2
    for i in range(1, len(input_string), 2) :

        # Converting string to integer
        # and then doing the square of it
        num_square = int(input_string[i]) ** 2

        # Concatenating the num_square values
        # with otp_string values
        otp_string += str(num_square)

        # if length of otp_string will become
        # greater than or equal to 4 then
        # print 4 digit answer and
        # break out of the loop
        if len(otp_string) >= 4 :
            
            print(otp_string[ : 4])
            break

    # if for loop runs successfully without break
    # then that means otp_string with length 4
    # is not possible so then prints -1
    # as an output
    else:
        print("-1")

Code 3: Using string slicing concept first then applying for loop on it.

# Code: 3

# Main Code
if __name__ == "__main__" :

    # Taking input from user
    input_string = input()

    # Take out the required characters in one
    # string using string slicing concept
    required_string = input_string[1 : : 2]
    
    # Empty string
    otp_string = ""

    for character in required_string :

        otp_string += str(int(character) ** 2)
        
        # if length of otp_string will become
        # greater than or equal to 4 then
        # print 4 digit answer and
        # break out of the loop
        if len(otp_string) >= 4 :
            
            print(otp_string[ : 4])
            break

    # if for loop runs successfully without break
    # then that means otp_string with length 4
    # is not possible so then prints -1
    # as an output
    else:
        print("-1")

Code 4: Using string slicing concept first then list comprehension and join() built-in function.

# Code: 4

# Main Code
if __name__ == "__main__" :

    # Taking input from user
    input_string = input()

    # Take out the required characters in one
    # string using string slicing concept
    required_string = input_string[1 : : 2]

    # create a list of square of each integral
    # values using list comprehension 
    otp_string_list = [str(int(char) ** 2) for char in required_string]

    # create a string from the list of characters
    # using join() method
    otp_string = "".join(otp_string_list)

    # if length of otp_string will become
    # greater than or equal to 4 then
    # print 4 digit answer
    if len(otp_string) >= 4 :
        print(otp_string[ : 4])
 
    # otp_string with 4 digit not possible
    # then print -1 as an output
    else:
        print(-1)

Thanks for reading this blog.

Check out this post also: TCS Xplore CPA Python Coding Question -1 with Solution

If you have any doubts in understanding the above Code or Question then please comment below, we will try to clear your doubts.

Leave a Reply

Your email address will not be published.