package capitulo04.bloque02;

import static capitulo04.utils.Utils.*;
import static capitulo04.utils.Utils.mostrarArrayNums;

public class Ejercicio06 {
    public static void main(String[] args) {
        int[] array = crearArrayNumsAleatorios(5, 0, 100);
        int direccion = solicitarIntScanner("Introduzca 0 si quiere mover el array a la izquierda o 1 para moverlo a la derecha.");
        int movimientos = solicitarIntScanner("Introduzca cuantas posiciones quiere mover el array: ");

        mostrarArrayNums(array);
        desplazaCiclico(array, movimientos, direccion);
        System.out.println();
        mostrarArrayNums(array);
    }

    public static void desplazaCiclico(int a[], int posiciones, int direccion) {
        switch (direccion) {
            case 1:
                desplazaCiclicoDerecha(a, posiciones);
                break;
            case 0:
                desplazaCiclicoIzquierda(a, posiciones);
                break;
        }
    }

    public static void desplazaCiclicoIzquierda(int a[], int posiciones) {
        for (int i = 0; i < posiciones; i++) {
            int tempVar = 0;
            for (int j = 0; j < a.length; j++) {
                if (j == 0) tempVar = a[j];
                a[j] = (j == (a.length - 1)) ? tempVar : a[j + 1];
            }
        }
    }

    public static void desplazaCiclicoDerecha(int a[], int posiciones) {
        for (int i = 0; i < posiciones; i++) {
            int tempVar = 0;
            for (int j = a.length - 1; j >= 0; j--) {
                if (j == a.length - 1) tempVar = a[j];
                a[j] = (j == 0) ? tempVar : a[j - 1];
            }
        }
    }
}
