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 )
|
Output
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 )
|
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
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 |
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