Python program to right rotate n-numbers by 1
Last Updated :
07 Feb, 2023
Improve
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.
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
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.
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