Programa Python3 para imprimir todas las rotaciones posibles de una array dada

Dada una array de enteros arr[] de tamaño N , la tarea es imprimir todas las rotaciones posibles de la array.
Ejemplos: 

Entrada: arr[] = {1, 2, 3, 4} 
Salida: {1, 2, 3, 4}, {4, 1, 2, 3}, {3, 4, 1, 2}, {2, 3, 4, 1} 
Explicación: 
Inicial arr[] = {1, 2, 3, 4} 
Después de la primera rotación arr[] = {4, 1, 2, 3} 
Después de la segunda rotación arr[] = {3, 4, 1, 2} 
Después de la tercera rotación arr[] = {2, 3, 4, 1} 
Después de la cuarta rotación, arr[] vuelve a su forma original.
Entrada: arr[] = [1] 
Salida: [1] 

Enfoque: 
siga los pasos a continuación para resolver el problema:  

  1. Genere todas las rotaciones posibles de la array, realizando una rotación a la izquierda de la array una por una.
  2. Imprima todas las rotaciones posibles de la array hasta que se encuentre la misma rotación de la array.

A continuación se muestra la implementación del enfoque anterior: 

Python

# Python program to print
# all possible rotations
# of the given array
 
# Function to reverse array
# between indices s and e
def reverse(arr, s, e):
    while s < e:
        tem = arr[s]
        arr[s] = arr[e]
        arr[e] = tem
        s = s + 1
        e = e - 1
# Function to generate all
# possible rotations of array
def fun(arr, k):
    n = len(arr)-1
    # k = k % n
    v = n - k
    if v>= 0:
        reverse(arr, 0, v)
        reverse(arr, v + 1, n)
        reverse(arr, 0, n)
        return arr
# Driver Code
arr = [1, 2, 3, 4]
for i in range(0, len(arr)):
    count = 0
    p = fun(arr, i)
    print(p, end =" ")
Producción: 

[1, 2, 3, 4] [4, 1, 2, 3] [2, 3, 4, 1] [3, 4, 1, 2]

 

Complejidad Temporal: O (N 2 )  
Espacio Auxiliar: O (1)

Consulte el artículo completo sobre Imprimir todas las rotaciones posibles de una array determinada para obtener más detalles.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *