Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fun checksum(spreadsheet: String, lineSummer: (List<Int>) -> Int = ::minAndMax): Int {
- val lines = spreadsheet.split("\n")
- val rows: List<List<Int>> = lines.map { line -> line.split(Regex("""\s""")).map { num -> Integer.valueOf(num) } }
- return rows.fold(0, { sum: Int, list -> sum + lineSummer(list)})
- }
- fun minAndMax(list: List<Int>): Int {
- return abs((list.max() ?: 0) - (list.min() ?: 0))
- }
- fun evenlyDivides(list: List<Int>): Int {
- val pair : Pair<Int,Int>? = allPairs(list).find { it -> it.first % it.second == 0 || it.second % it.first == 0 }
- return when {
- pair == null -> 0
- pair.first > pair.second -> pair.first / pair.second
- else -> pair.second / pair.first
- }
- }
- fun <T> allPairs(list: List<T>): List<Pair<T, T>> {
- val pairs = arrayListOf<Pair<T, T>>()
- for ((index, left) in list.withIndex()) {
- if (index != list.size - 1) {
- list.subList(index + 1, list.size).mapTo(pairs) { left to it }
- }
- }
- return pairs
- }
Add Comment
Please, Sign In to add comment