package examenes.examen20241025;

import static examenes.examen20241025.utils.Utils.*;

public class Ejercicio_e {
    public static void main(String[] args) {

        //Creo un array aleatorio
        int[] arrayAleatorio = crearArrayNumsAleatorios(20, 0, 100);

        //Muestro el array normal
        System.out.println("Este es el array generado:");
        mostrarArrayNums(arrayAleatorio);

        //Muestro solo los picos
        System.out.println("\nEstos son los picos del array:");
        mostrarArrayNums(buscarPicos(arrayAleatorio));
    }

    public static int[] buscarPicos(int[] array) {
        //Creo un contador para después saber de qué tamaño hacer el array a devolver
        int picosEncontrados = 0;

        //Duplico el array para que las comparaciones se hagan sin problemas
        int[] arrayDuplicado = new int[array.length];
        for (int i = 0; i < array.length; i++) {
            arrayDuplicado[i] = array[i];
        }

        //Recorro todo el array
        for (int i = 0; i < array.length; i++) {
            //Para apuntarlos los pongo negativos en un array aparte

            //Si estamos al principio solo comparo con el de al lado
            if (i == 0) {
                if (array[i] > array[i + 1]) {
                    arrayDuplicado[i] *= -1;
                    picosEncontrados++;
                }
                //Si estamos al principio solo comparo con el del final
            } else if (i == (array.length - 1)) {
                if (array[i] > array[i - 1]) {
                    arrayDuplicado[i] *= -1;
                    picosEncontrados++;
                }
                //En otro caso comparo en los dos lados
            } else {
                if (array[i] > array[i - 1] && array[i] > array[i + 1]) {
                    arrayDuplicado[i] *= -1;
                    picosEncontrados++;
                }
            }
        }

        //Creo el array con el tamaño necesario
        int[] arrayPicos = new int[picosEncontrados];
        int contadorIndice = 0;

        //Voy buscando los negativos y los añado al array nuevo como positivos
        for (int i = 0; i < arrayDuplicado.length; i++) {
            if (arrayDuplicado[i] < 0) {
                arrayPicos[contadorIndice] = (arrayDuplicado[i] * -1);
                contadorIndice++;
            }
        }
        return arrayPicos;
    }
}
