val arr = intArrayOf(1, 2, 3, 4, 5)
println(arr.copyOfRange(1, 4).joinToString()) // 2, 3, 4
➝ to 직전까지 (exclusive)
println(arr.sliceArray(1..3).joinToString()) // 2, 3, 4
➝ range 그대로 (inclusive)
println(arr.slice(1..3).toIntArray().joinToString()) // 2, 3, 4
➝ 중간에 List 거침
val nums = (1..10).toList()
println(nums.filter { it % 2 == 0 }) // [2, 4, 6, 8, 10]
println(nums.map { it * it }) // 제곱 [1, 4, 9, ...]
println(nums.mapIndexed { idx, v -> "$idx:$v" })
// [0:1, 1:2, 2:3, ...]
var arr2 = intArrayOf(1, 2)
arr2 = arr2.plus(3)
println(arr2.joinToString()) // 1, 2, 3
val a = listOf("A", "B", "C")
val b = listOf(1, 2, 3)
println(a.zip(b)) // [(A,1), (B,2), (C,3)]
val nums2 = (1..10).toList()
println(nums2.chunked(3))
// [[1,2,3], [4,5,6], [7,8,9], [10]]
println(nums.any { it > 5 }) // true
println(nums.all { it > 0 }) // true
println(nums.none { it < 0 }) // true
println(nums.first()) // 1
println(nums.last()) // 10
println(nums.find { it > 5 }) // 6
println(nums.findLast { it < 5 }) // 4
println(listOf(3,1,4,1,5).sorted()) // [1,1,3,4,5]
println(listOf(3,1,4,1,5).sortedDescending()) // [5,4,3,1,1]
println(listOf(1,2,2,3,3,3).distinct()) // [1, 2, 3]
val words = listOf("apple", "ant", "banana", "bear")
println(words.groupBy { it.first() })
// {a=[apple, ant], b=[banana, bear]}
println(nums.sum()) // 55
println(nums.average()) // 5.5
println(nums.count { it % 2 == 0 }) // 5