## 2019年5月6日月曜日

### Kotlin - built-in higher-order functions - Power Up Your Code - Map(keys, values), fold, groupBy, sumBy, List(size)

Head First Kotlin: A Brain-Friendly Guide (Dawn Griffiths(著)、David Griffiths(著)、O'Reilly Media)のChapter 12(built-in higher-order functions - Power Up Your Code)、Mixed Messages(391)の解答を求めてみる。

コード

```fun main() {
val myMap = mapOf("A" to 4, "B" to 3, "C" to 2, "D" to 1, "E" to 2)
var x1 = ""
var x2 = 0
println("1.")
x1 = myMap.keys.fold("") { x, y -> x + y }
x2 = myMap.entries.fold(0) { x, y -> x * y.value }
println("\$x1\$x2" == "ABCDE0")

x1 = "ABCDE"
x2 = 0
println("2.")
x2 = myMap.values.groupBy { it }.keys.sumBy { it }
println("\$x1\$x2" == "ABCDE10")

x1 = "ABCDE"
println("3.")
x2 = myMap.values.fold(12) { x, y -> x - y }
println("\$x1\$x2" == "ABCDE0")

x1 = "ABCDE"
x2 = 0
println("4.")
x2 = myMap.entries.fold(1) { x, y -> x * y.value }
println("\$x1\$x2" == "ABCDE48")

x1 = "ABCDE"
x2 = 0
println("4.")
x1 = myMap.values.fold("") { x, y -> x + y }
println("\$x1\$x2" == "432120")

x1 = "ABCDE"
x2 = 0
println("5.")
x1 = myMap.values
.fold(0) { x, y -> x + y }
.toString()
x2 = myMap.keys.groupBy { it }.size
println("\$x1\$x2" == "125")

}```

```1.
true
2.
true
3.
true
4.
true
4.
true
5.
true

Process finished with exit code 0
```