ラベル付きループを継続する
CoddyのKotlinジャーニー「ロジックとフロー」セクションの一部。レッスン 43/63。
ラベル付きのcontinueは、名前付きループの現在の反復の残りをスキップし、次の反復を開始します。内側のループから、無効なセルが1つ見つかった時点でcontinue@rowsを使って現在の行全体を除外できます。
mainの内部:
var accepted = 0
rows@ for (row in listOf(listOf(1, 2), listOf(3, -1), emptyList())) {
for (value in row) {
if (value < 0) continue@rows
}
accepted++
}
println(accepted)負のセルがその行を除外します。非負の行と空の行はインクリメントに到達します。
ラベル付きの continue は、名前付きループの次の反復に移動します。
チャレンジ
中級パラメーター grid: List<List<Int>>を使用してnonnegativeRowsを完成させてください。負の値を含まない行の数を数えます。空の行も数えます。負の値を含む行を除外するには、ラベル付きの外側ループで continue を使用してください。
上記でより厳しい上限が示されていない限り、コレクションは各レベルで最大100個の要素を含み、整数の引数および整数コレクションの値は-1000から1000までです。解析用に提供されるテキストには、説明されているように無効な表現や範囲外の表現が含まれる場合があります。
型Intの値を返してください。提供された入力/出力コードはそのまま使用してください。スカラー引数は1行に1つずつ読み取られます。リストは要素数の後に要素が続く形式で始まり、マップはエントリ数の後に各キーと値が続く形式で始まります。ネストされたリストでは、各行について要素数と要素の形式を繰り返します。提供されたmainは、返り値の後に改行を1つ出力します。リストにはKotlin標準の角括弧形式を使用し、追加のラベルは出力しないでください。
自分で試してみよう
fun nonnegativeRows(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(nonnegativeRows(grid))
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Kotlinプレイグラウンド