ネストしたリストの平坦化
CoddyのKotlinジャーニー「ロジックとフロー」セクションの一部。レッスン 19/63。
flattenは、内側のリストを外側の行の順序、次に内側の要素の順序で連結し、1つのリストにします。ネストを1レベル解除しますが、重複を削除したり値をソートしたりはしません。
main の中:
val rows = listOf(listOf(3, 1), emptyList(), listOf(1, 2))
println(rows.flatten())行の順序は維持され、1 も 2 個とも含まれます。
flatten はコレクションのネストを1レベル取り除き、要素の順序を保持します。
チャレンジ
中級パラメータ grid: List<List<Int>>を使用してflattenRowsを完成させてください。すべての行の値を、行の順序で1つのリストとして返してください。
上記でより厳しい範囲が指定されていない限り、コレクションは各レベルで最大100個の要素を含み、整数引数および整数コレクション値は-1000から1000の範囲です。解析用に提供されるテキストには、説明されているように、無効または範囲外の表現が含まれる場合があります。
型List<Int>の値を返してください。提供された入力/出力コードはそのまま使用してください。スカラー引数は1行に1つずつ読み取られます。リストは個数に続いて要素が並び、マップはエントリ数に続いて各キーと値が並びます。ネストされたリストでは、各行について個数と要素の形式が繰り返されます。提供されたmainは、戻り値の後に改行を1つ付けて出力します。リストにはKotlin標準の角括弧形式を使用し、追加のラベルは出力しないでください。
自分で試してみよう
fun flattenRows(grid: List<List<Int>>): List<Int> {
// ここに解答を書いてください。
return emptyList()
}
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(flattenRows(grid))
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Kotlinプレイグラウンド