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 monitoreo de seguridad. El sistema busca a través de múltiples zonas de seguridad posibles amenazas y las categoriza con niveles de alerta en cascada.

Recibirás dos entradas:

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

Se te proporcionan los siguientes datos de 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 a buscar de la segunda entrada
  3. Usar bucles anidados con un break etiquetado para buscar a través de las zonas
  4. Cuando encuentres el nivel de amenaza objetivo, imprime "Threat found at zone [zone_number] position [position]" y sal inmediatamente de ambos bucles usando el break etiquetado
  5. Después de encontrar la amenaza (o si no se encuentra ninguna), usa una sentencia switch con fallthrough para mostrar alertas de seguridad basadas en el nivel de amenaza que estabas buscando

La sentencia switch debe funcionar de la siguiente manera:

  • Para "critical": Imprime "CRITICAL: Lockdown initiated!" y usa fallthrough para imprimir también la alerta high
  • Para "high": Imprime "HIGH: Security breach detected!" y usa fallthrough para imprimir también la alerta medium
  • Para "medium": Imprime "MEDIUM: Increased monitoring active"
  • Para "low": Imprime "LOW: Standard security protocols"

Si no se encuentra la amenaza después de buscar en el número especificado de zonas, imprime "Threat not found in searched zones" antes de mostrar las alertas de seguridad. Usa indexación basada 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