How to fill two instances of all numbers from 1 to n in a specific way in Python

In this tutorial, we are going to learn how we can fill two instances of all numbers from 1 to n in a specific way in Python.
A number is given in this problem which is said to be n. An array is to be created with the size 2n.
the array must contain two instances of every number from one to that given number i.e. n.
The elements between those two instances must b equal to that number.

Input: n = 2
Output: Not Possible

Input: n = 11
Output: 11 6 10 2 9 3 2 8 6 3 7 5 11 10 9 4 8 5 7 1 4 1 
Input: n = 5
Output: Not Possible

 

One of the solutions to this is backtracking.
In this, we place two instances of n at a place and then go for recurrence for n-1.
If recurrence is successful then we get true else we go trying to place n at different locations to obtain
the desired result.

# To fill two instances of all numbers
def fill(result, current, m):
    #If current number becomes 0 then all numbers are filled

    if current == 0:
        return True

    # Try placing two instances of 'curr' at all
    # possible locations till solution is found
    for i in range(2 * m - current - 1):


        if result[i] == 0 and result[i + current + 1] == 0:

            # Place two instances of 'curr'
            result[i] = result[i + current + 1] = current

            #Check the above

            if fill(result, current - 1, m):
                return True

            # If solution is not possible,
            # then backtrack
            result[i] = 0
            result[i + current + 1] = 0

    return False


def fillin(m):
    # This function prints the result

    # Create an array of size 2n

    result = [0] * (2 * m)

    # Print not possible if solution is not possible

    if fill(result, m, m):
        for i in range(2 * m):
            print(result[i], end=' ')
        print()
    else:
        print("Not Possible")


if __name__ == '__main__':
    fillin(11)


Output

fill two instances of all numbers from 1 to n in a specific way in Python

Leave a Reply

Your email address will not be published. Required fields are marked *