Aprende Java Fácil. Capítulo 17. Decodificar sistemas de comunicación

Capítulo 17. Decodificar sistemas de comunicación

Mis compañeros de huida me han puesto deberes. Creo que lo que pretenden es ayudarme a mantener la mente ocupada y que así esté un poco más tranquilo. Bud va a acceder al sistema de comunicaciones de los guardias y me ha pedido que le ayude.

Si alguien se entera de que hemos escapado antes de que yo pueda volver a la prisión, el plan habrá sido un completo fracaso, al menos para mí. Todo está bien calculado para que eso no ocurra, pero si nos topamos con algún carcelero, debemos evitar que dé la voz de alarma. Para ello, crearemos un cortafuegos.

 

 

Dentro de la cárcel, la situación será un poco distinta. Si nos descubre un guardia, no nos quedará más remedio que reducirlo y atarlo. Mientras no pueda pedir refuerzos, el plan seguirá en marcha.

Bud y Pedro van a llevar el ordenador con ellos y, entre otras cosas, lo usarán para monitorear y bloquear las comunicaciones entre los guardias de la prisión. Por supuesto, no todas las comunicaciones, solo las que nos interesan.

Así que, aprovechando que acabo de aprender el bucle for-each, voy a hacer los cinco programas que me han pedido utilizando ese concepto. Por supuesto, antes de comenzar el plan, Bud y Pedro los van a revisar para asegurarse de que todo está bien.

Para el primer ejercicio, tendré que interceptar algunos de los mensajes, en concreto aquellos que mencionen uno de los tres sectores por los que vamos a pasar: el sector 6, el 12 y el 14.

Programa 1. Interceptar Mensajes.

 

–      Inicializa un array con tres elementos:

 

«Mensaje 12: sector 12»

«Mensaje 6: sector 6»

«Mensaje 14: sector 14»

 

–      Utiliza un bucle for-each para imprimir el mensaje actual en la consola precedido por la cadena «Mensaje interceptado: «.

 

Solución:

 

public class Main {

    public static void main(String[] args) {
        String[] mensajes = {
            "Mensaje 12: sector 12",
            "Mensaje 6: sector 6",
            "Mensaje 14: sector 14"
        };

        for (String mensaje : mensajes) {
            System.out.println("Mensaje interceptado: " + mensaje);
        }
    }

}

 

En caso de que se cuele algún mensaje de otro sector, deberemos hacer algo para que este los filtre y evite falsos positivos. Recordemos que para nosotros solo son importantes los mensajes que se refieran a los sectores 6, 12 y 14.

Ejercicio 2. Filtrar mensajes.

 

  • Inicializa un array con catorce elementos:

«Mensaje 1: Alerta en el sector 1», «Mensaje 2: Alerta en el sector 2», «Mensaje 3: Alerta en el sector 3», «Mensaje 4: Alerta en el sector 4», «Mensaje 5: Alerta en el sector 5», «Mensaje 6: Alerta en el sector 6», «Mensaje 7: Alerta en el sector 7», «Mensaje 8: Alerta en el sector 8», «Mensaje 9: Alerta en el sector 9», «Mensaje 10: Alerta en el sector 10», «Mensaje 11: Alerta en el sector 11», «Mensaje 12: Alerta en el sector 12», «Mensaje 13: Alerta en el sector 13», «Mensaje 14: Alerta en el sector 14»

 

  • Utiliza un bucle for-each para filtrar y mostrar mensajes importantes:

Dentro del bucle for-each, verifica si el mensaje actual contiene el número «6», «12» o «14».

Si la condición se cumple, imprime el mensaje actual en la consola precedido por la cadena «Mensaje importante: «.

 

Solución

 

public class Main {

    public static void main(String[] args) {
        String[] mensajes = {
            "Mensaje 1: Alerta en el sector 1",
            "Mensaje 2: Alerta en el sector 2",
            "Mensaje 3: Alerta en el sector 3",
            "Mensaje 4: Alerta en el sector 4",
            "Mensaje 5: Alerta en el sector 5",
            "Mensaje 6: Alerta en el sector 6",
            "Mensaje 7: Alerta en el sector 7",
            "Mensaje 8: Alerta en el sector 8",
            "Mensaje 9: Alerta en el sector 9",
            "Mensaje 10: Alerta en el sector 10",
            "Mensaje 11: Alerta en el sector 11",
            "Mensaje 12: Alerta en el sector 12",
            "Mensaje 13: Alerta en el sector 13",
            "Mensaje 14: Alerta en el sector 14"
        };

        for (String mensaje : mensajes) {
            if (mensaje.contains("6") || mensaje.contains("12") || mensaje.contains("14")) {
                System.out.println("Mensaje importante: " + mensaje);
            }
        }
    }

}

 

Una vez identificados y filtrados los mensajes que nos incomodan, es hora de bloquearlos. De esta manera evitaremos que se extiendan y alerten a todos los guardias de la prisión.

Ejercicio 3. Bloquear Comunicaciones

 

  • Inicializa un array con tres elementos:

«Mensaje 12: sector 12»

«Mensaje 6: sector 6»

«Mensaje 14: sector 14»

 

  • Utiliza un bucle for-each para mostrar mensajes bloqueados. Dentro del bucle for-each, imprime el mensaje actual en la consola precedido por la cadena «Bloqueando mensaje:».

 

Solución:

 

public class Main {

    public static void main(String[] args) {
        String[] mensajes = {
            "Mensaje 12: Alerta en el sector 12",
            "Mensaje 6: Alerta en el sector 6",
            "Mensaje 14: Alerta en el sector 14"
        };

        for (String mensaje : mensajes) {
            System.out.println("Bloqueando mensaje: " + mensaje);
        }
    }

}

 

Además de bloquearlos, necesitamos redirigirlos hacia nuestro programa principal. Bud y Pedro utilizan dos ordenadores distintos, y ambos necesitarán estar atentos para saber si algún guardia ha dado la voz de alarma.

Ejercicio 4. Redirigir comunicaciones.

  • Inicializa el arreglo con tres elementos:

 

«Mensaje 12: sector 12»

«Mensaje 6: sector 6»

«Mensaje 14: sector 14»

 

  • Utiliza un bucle for-each para iterar sobre mostrar mensajes redirigidos:

Dentro del bucle for-each, imprime el mensaje actual en la consola precedido por la cadena «Redirigiendo mensaje: » y seguido por la cadena » a sistema externo».

 

Solución:

 

public class Main {

    public static void main(String[] args) {
        String[] mensajes = {
            "Mensaje 12: sector 12",
            "Mensaje 6: sector 6",
            "Mensaje 14: sector 14"
        };

        for (String mensaje : mensajes) {
            System.out.println("Redirigiendo mensaje: " + mensaje + " a sistema externo");
        }
    }

}

 

Además de las comunicaciones entre los vigilantes, existe otra medida de seguridad que nos preocupa: el monitoreo de cámaras. En la prisión se utiliza un software de inteligencia artificial que analiza las imágenes y genera un mensaje por cada minuto. Tres de esos mensajes son inocuos, pero debemos crear un software que detecte el que nos incrimina. Después, Bud completará el software para que esas comunicaciones se bloqueen, tal como hicimos con los ejercicios anteriores. A continuación, te muestro los cuatro mensajes que genera el software de IA. Como imaginarás, el mensaje que dice ‘Alerta’ es el que debemos identificar y neutralizar.

Ejercicio 5. Monitoreo de Cámaras

 

  • Inicializa el arreglo con cuatro elementos:

«Imagen 1: Pasillo vacío» «Imagen 2: Alarma» «Imagen 3: Puerta abierta» «Imagen 4: Todo en orden»

  • Utiliza un bucle for-each para iterar sobre cada elemento del arreglo imágenes. Detectar Actividad Sospechosa.

Dentro del bucle for-each, verifica si la imagen actual contiene las palabras «Puerta abierta» o «Guardia».

Si la condición se cumple, imprime el mensaje en la consola precedido por la cadena «Actividad sospechosa detectada: «.

Si no se cumple la condición, imprime el mensaje en la consola precedido por la cadena «Monitoreo normal: «.

 

Solución:

 

public class Main {

    public static void main(String[] args) {

        String[] imagenes = {
            "Imagen 1: Pasillo vacío",
            "Imagen 2: Alarma",
            "Imagen 3: Puerta abierta",
            "Imagen 4: Todo en orden"
        };

        for (String imagen : imagenes) {

            if (imagen.contains("Puerta abierta") || imagen.contains("Guardia")) {
                System.out.println("Actividad sospechosa detectada: " + imagen);
            } else {
                System.out.println("Monitoreo normal: " + imagen);
            }

        }

    }

}

 

Ya he cumplido con mi parte. Con estos programas, Bud y Pedro tienen todo lo que necesitan. A partir de ahora, me toca descansar y prepararme mentalmente para la última fase de la escapada. De momento, todo va perfecto y no ha habido ningún contratiempo. Espero que la buena racha continúe.