fun countLetterOccurrencesFold(charArray: CharArray): Map<Char, Int> {
return charArray.fold(mutableMapOf()) { acc, char ->
acc.apply { this[char] = getOrDefault(char, 0) + 1 }
}
}
fun main() {
val charArray = charArrayOf('k', 'o', 'k', 'c', 'd', 'c', 'e', 'f', 'e', 'k')
val occurrences = countLetterOccurrencesFold(charArray)
println(occurrences)
println(occurrences.map { "${it.key}: ${it.value}" }.joinToString(", \n"))
}
/*
run:
{k=3, o=1, c=2, d=1, e=2, f=1}
k: 3,
o: 1,
c: 2,
d: 1,
e: 2,
f: 1
*/