Menu
Coddy logo textTech

まとめ:高度なループ制御

CoddyのGOジャーニー「論理とフロー」セクションの一部 — レッスン 5/68。

challenge icon

チャレンジ

簡単

このチャレンジでは、ラベル付きの break ステートメントと switch および fallthrough を組み合わせて、セキュリティ監視システムを作成します。このシステムは、複数のセキュリティゾーンを検索して脅威を探し、連鎖的なアラートレベルでそれらを分類します。

2つの入力を受け取ります:

  • 検索する脅威レベルを表す文字列(例:"high"
  • 検索する最大ゾーン数を表す文字列(例:"3"

以下のセキュリティゾーンデータが提供されています:

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

あなたのタスクは以下の通りです:

  1. 最初の入力から脅威レベルを解析する
  2. 2番目の入力から検索する最大ゾーン数を解析する
  3. ラベル付き break を使用したネストされたループを使用して、ゾーン内を検索する
  4. ターゲットの脅威レベルが見つかったら、"Threat found at zone [zone_number] position [position]" と出力し、ラベル付き break を使用して直ちに両方のループを抜ける
  5. 脅威が見つかった後(または脅威が見つからなかった場合)、switch ステートメントと fallthrough を使用して、検索していた脅威レベルに基づいたセキュリティアラートを表示する

switch ステートメントは次のように動作する必要があります:

  • "critical" の場合: "CRITICAL: Lockdown initiated!" と出力し、fallthrough して high アラートも出力する
  • "high" の場合: "HIGH: Security breach detected!" と出力し、fallthrough して medium アラートも出力する
  • "medium" の場合: "MEDIUM: Increased monitoring active" と出力する
  • "low" の場合: "LOW: Standard security protocols" と出力する

指定された数のゾーンを検索しても脅威が見つからない場合は、セキュリティアラートを表示する前に "Threat not found in searched zones" と出力してください。ゾーン番号とゾーン内の位置には 0 から始まるインデックスを使用してください。

自分で試してみよう

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" を出力します
    // その後、セキュリティアラートのために fallthrough を使用した switch 文を使用します
    
}

論理とフローのすべてのレッスン