Given a number n. The task is to print n-integers n-times (starting from 1) and right rotate the integers by after each iteration.
Examples:
Input: 6 Output : 1 2 3 4 5 6 2 3 4 5 6 1 3 4 5 6 1 2 4 5 6 1 2 3 5 6 1 2 3 4 6 1 2 3 4 5 Input : 3 Output : 1 2 3 2 3 1 3 1 2
Method 1:
Below is the implementation.
Python3
def print_pattern(n): for i in range ( 1 , n + 1 , 1 ): for j in range ( 1 , n + 1 , 1 ): # check that if index i is # equal to j if i = = j: print (j, end = " " ) # if index i is less than j if i < = j: for k in range (j + 1 , n + 1 , 1 ): print (k, end = " " ) for p in range ( 1 , j, 1 ): print (p, end = " " ) # print new line print () # Driver's code print_pattern( 3 ) |
1 2 3 2 3 1 3 1 2
Method 2: Using pop(),append() and loops
Python3
def print_pattern(n): x = [] for i in range ( 1 , n + 1 ): x.append(i) print (i, end = " " ) print () j = 0 while (j < n - 1 ): a = x[ 0 ] x.pop( 0 ) x.append(a) for k in x: print (k, end = " " ) print () j + = 1 print_pattern( 6 ) |
1 2 3 4 5 6 2 3 4 5 6 1 3 4 5 6 1 2 4 5 6 1 2 3 5 6 1 2 3 4 6 1 2 3 4 5
Using modulus operator: In this approach, we are using the modulus operator and adding i to the loop variable j to get the current number in each iteration. The time complexity of this approach is O(n^2) as it requires two nested loops. The space complexity is O(1) as we are only using a few variables and not using any extra data structures.
Python3
def print_pattern(n): for i in range (n): for j in range (n): print ((j + i) % n + 1 , end = " " ) print () # Driver's code print_pattern( 6 ) #This code is contributed by Edula Vinay Kumar Reddy |
1 2 3 4 5 6 2 3 4 5 6 1 3 4 5 6 1 2 4 5 6 1 2 3 5 6 1 2 3 4 6 1 2 3 4 5