Menu
Coddy logo textTech

Итоги: Продвинутое управление циклами

Часть раздела Логика и управление потоком путешествия по GO на Coddy — урок 5 из 68.

challenge icon

Задание

Легко

В этом испытании вы объедините именованные операторы break с switch и fallthrough для создания системы мониторинга безопасности. Система выполняет поиск угроз в нескольких зонах безопасности и классифицирует их с помощью каскадных уровней оповещения.

Вы получите два входных значения:

  • Строку, представляющую уровень угрозы для поиска (например, "high")
  • Строку, представляющую максимальное количество зон для поиска (например, "3")

Вам предоставлены следующие данные о зонах безопасности:

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

Ваша задача:

  1. Получить уровень угрозы из первого входного значения
  2. Получить максимальное количество зон для поиска из второго входного значения
  3. Использовать вложенные циклы с именованным break для поиска по зонам
  4. При обнаружении целевого уровня угрозы вывести "Threat found at zone [zone_number] position [position]" и немедленно выйти из обоих циклов, используя именованный break
  5. После нахождения угрозы (или если угроза не найдена), использовать оператор switch с fallthrough для отображения оповещений безопасности на основе уровня угрозы, который вы искали

Оператор switch должен работать следующим образом:

  • Для "critical": Вывести "CRITICAL: Lockdown initiated!" и перейти (fall through) к выводу оповещения высокого уровня
  • Для "high": Вывести "HIGH: Security breach detected!" и перейти (fall through) к выводу оповещения среднего уровня
  • Для "medium": Вывести "MEDIUM: Increased monitoring active"
  • Для "low": Вывести "LOW: Standard security protocols"

Если угроза не найдена после поиска в указанном количестве зон, выведите "Threat not found in searched zones" перед отображением оповещений безопасности. Используйте индексацию с нуля для номеров зон и позиций внутри зон.

Попробуйте сами

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // Чтение входных данных
    var threatLevel string
    var maxZonesStr string
    fmt.Scanln(&threatLevel)
    fmt.Scanln(&maxZonesStr)
    
    // Преобразование максимального количества зон в целое число
    maxZones, _ := strconv.Atoi(maxZonesStr)
    
    // Данные зон безопасности
    zones := [][]string{
        {"low", "medium", "low"},
        {"medium", "high", "low"},
        {"critical", "medium", "high"},
        {"low", "critical", "medium"},
    }
    
    // TODO: Напишите свой код ниже
    // Используйте вложенные циклы с именованным break для поиска угрозы
    // Выведите местоположение угрозы, если она найдена, или "Threat not found in searched zones", если не найдена
    // Затем используйте switch с fallthrough для оповещений безопасности
    
}

Все уроки раздела Логика и управление потоком