Menu
Coddy logo textTech

Repaso: Control de bucles avanzado

Parte de la sección Lógica y Flujo del Journey de GO de Coddy. Lección 5 de 68.

challenge icon

Desafío

Fácil

En este desafío, combinarás sentencias break etiquetadas con switch y fallthrough para crear un sistema de supervisión de seguridad. El sistema busca amenazas en varias zonas de seguridad y las categoriza con niveles de alerta en cascada.

Recibirás dos entradas:

  • Una cadena que representa el nivel de amenaza que se debe buscar (por ejemplo, "high")
  • Una cadena que representa el número máximo de zonas que se deben buscar (por ejemplo, "3")

Se te proporcionan los siguientes datos de las zonas de seguridad:

zones := [][]string{
    {"low", "medium", "low"},
    {"medium", "high", "low"},
    {"critical", "medium", "high"},
    {"low", "critical", "medium"}
}

Tu tarea es:

  1. Analizar el nivel de amenaza de la primera entrada
  2. Analizar el número máximo de zonas que se deben buscar de la segunda entrada
  3. Usar bucles anidados con un break etiquetado para buscar en las zonas
  4. Cuando encuentres el nivel de amenaza objetivo, imprimir "Threat found at zone [zone_number] position [position]" y salir inmediatamente de ambos bucles usando un break etiquetado
  5. Después de encontrar la amenaza (o si no se encuentra ninguna), usar una sentencia switch con fallthrough para mostrar alertas de seguridad según el nivel de amenaza que estabas buscando

La sentencia switch debe funcionar de la siguiente manera:

  • Para "critical": Imprimir "CRITICAL: Lockdown initiated!" y continuar con la impresión de la alerta alta
  • Para "high": Imprimir "HIGH: Security breach detected!" y continuar con la impresión de la alerta media
  • Para "medium": Imprimir "MEDIUM: Increased monitoring active"
  • Para "low": Imprimir "LOW: Standard security protocols"

Si no se encuentra la amenaza después de buscar en el número especificado de zonas, imprimir "Threat not found in searched zones" antes de mostrar las alertas de seguridad. Usa índices basados en 0 para los números de zona y las posiciones dentro de las zonas.

Pruébalo tú mismo

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // Leer entrada
    var threatLevel string
    var maxZonesStr string
    fmt.Scanln(&threatLevel)
    fmt.Scanln(&maxZonesStr)
    
    // Convertir el máximo de zonas a entero
    maxZones, _ := strconv.Atoi(maxZonesStr)
    
    // Datos de las zonas de seguridad
    zones := [][]string{
        {"low", "medium", "low"},
        {"medium", "high", "low"},
        {"critical", "medium", "high"},
        {"low", "critical", "medium"},
    }
    
    // TODO: Escribe tu código abajo
    // Usa bucles anidados con break etiquetado para buscar la amenaza
    // Imprime la ubicación de la amenaza si se encuentra, o "Threat not found in searched zones" si no se encuentra
    // Luego usa switch con fallthrough para las alertas de seguridad
    
}

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de Go online