驴C贸mo rotar un arreglo en Go?
Dada un arreglo de N valores, crear una funci贸n que rote K posiciones dicho arreglo.
Lo primero que requerimos es poder rotar nuestro arreglo entre dos l铆mites. Esta funci贸n no retorna ning煤n valor por lo que trabaja con el arreglo directamente.
func InvertirArreglo(lista []int, inicio int, fin int) {
i := inicio
j := fin
for i < j {
lista[i], lista[j] = lista[j], lista[i]
i++
j--
}
}
Ya que tenemos nuestra funci贸n para invertir nuestro arreglo ahora requerimos nuestra funci贸n para rotar nuestro arreglo.
func RotarArreglo(lista []int, posiciones int) {
InvertirArreglo(lista, 0, posiciones-1)
InvertirArreglo(lista, posiciones, len(lista)-1)
InvertirArreglo(lista, 0, len(lista)-1)
}
Con estas tres lineas invocando la misma funci贸n que invierte el arreglo, se realizan las operaciones necesarias para mover N posiciones nuestro arreglo.
Ahora vamos a realizar la prueba.
func main() {
numeros := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
RotarArreglo(numeros, 3)
fmt.Println(numeros)
}
Salida
[3 4 5 6 7 8 9 0 1 2]
Podemos cambiar el valor de las posiciones a rotar y nuestro ejemplo seguir谩 funcionando correctamente.