Menu
Coddy logo textTech

ラベル付きループを抜ける

CoddyのKotlinジャーニー「ロジックとフロー」セクションの一部。レッスン 42/63。

通常の break は最も近いループだけを終了します。外側のループに search@ のようなラベルを付け、ネストされたループ内で break@search を使用すると、目的に到達したときに検索全体を終了できます。ラベルは、その直後に続くループに属します。

mainの内部:

var found = -1
search@ for (row in listOf(listOf(1, 4), listOf(6, 8))) {
    for (value in row) {
        if (value % 2 == 0) {
            found = value
            break@search
        }
    }
}
println(found)

4は行の順序で最初の偶数値であり、ラベル付きのbreakによって残りの行がスキップされます。

ラベル付きの break は、ネストされた処理を含め、指定されたラベルのループを終了します。

challenge icon

チャレンジ

中級

パラメーター grid: List<List<Int>> を使用して firstEven を完成させてください。行の順序で最初の偶数値を見つけ、ラベル付きの break を使用して両方のループを停止します。一致する値がない場合は -1 を返してください。0 および負の偶数値も対象に含めます。

上記でより厳しい上限が指定されていない限り、コレクションは各レベルで最大 100 個の要素を含み、整数引数および整数コレクション値は -1000 から 1000 の範囲です。解析用に提供されるテキストには、説明されているように無効な表現や範囲外の表現が含まれる場合があります。

型 Int の値を返してください。提供された入出力コードはそのまま使用してください。スカラー引数は 1 行に 1 つずつ読み取られます。リストは要素数に続いて各要素が並び、マップはエントリ数に続いて各キーと値が並びます。ネストされたリストでは、各行について要素数と要素の形式を繰り返します。提供された main は、戻り値に続けて改行を 1 つ出力します。リストには Kotlin 標準の角括弧形式を使用し、追加のラベルは出力しないでください。

自分で試してみよう

fun firstEven(grid: List<List<Int>>): Int {
    // ここに解答を書いてください。
    return 0
}
fun main() {
    val gridCount = readln().toInt()
    val grid = mutableListOf<List<Int>>()
    for (i0 in 0 until gridCount) {
        val gridItemCount = readln().toInt()
        val gridItem = mutableListOf<Int>()
        for (i1 in 0 until gridItemCount) {
            val gridItemItem = readln().toInt()
            gridItem.add(gridItemItem)
        }
        grid.add(gridItem)
    }
    println(firstEven(grid))
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン

自分で練習してみよう: Kotlinプレイグラウンド