Foldで累積する
CoddyのKotlinジャーニー「ロジックとフロー」セクションの一部。レッスン 34/63。
foldは明示的な初期アキュムレーターから開始し、要素を順番に処理します。そのラムダはアキュムレーターと次の要素を受け取り、次のアキュムレーターを返します。初期値は、空の入力に対する結果にもなります。
main内:
println(listOf(2, 3, 4).fold(1) { product, value -> product * value })アキュムレーターは1から始まり、2、6、24になります。
foldは、初期アキュムレーターを空の入力に対する結果として使用します。
チャレンジ
中級パラメーター values: List<Int>を指定してsumWithFoldを完成させてください。初期値にゼロを指定したfoldを使用して、値の合計を返してください。
上記でより厳しい範囲が指定されていない限り、コレクションは各レベルで最大100個の要素を含み、整数の引数と整数コレクションの値は-1000から1000の範囲です。解析用に提供されるテキストには、説明されているように無効な表現や範囲外の表現が含まれる場合があります。
型Intの値を返してください。提供されている入力・出力コードはそのまま使用してください。スカラー引数は1行に1つずつ読み取られます。リストは要素数に続いて各要素が始まり、マップはエントリ数に続いて各キーと値が始まります。ネストされたリストでは、各行について要素数と要素の形式が繰り返されます。提供されているmainは、戻り値の後に改行を1つ付けて出力します。リストにはKotlin標準の角かっこ形式を使用し、追加のラベルは出力しないでください。
自分で試してみよう
fun sumWithFold(values: List<Int>): Int {
// ここに解答を書いてください。
return 0
}
fun main() {
val valuesCount = readln().toInt()
val values = mutableListOf<Int>()
for (i0 in 0 until valuesCount) {
val valuesItem = readln().toInt()
values.add(valuesItem)
}
println(sumWithFold(values))
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Kotlinプレイグラウンド