Python program to right rotate n-numbers by 1

• Difficulty Level : Basic
• Last Updated : 07 Feb, 2023

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 ```

My Personal Notes arrow_drop_up