Guest User

Untitled

a guest
Jan 19th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. fun checksum(spreadsheet: String, lineSummer: (List<Int>) -> Int = ::minAndMax): Int {
  2. val lines = spreadsheet.split("\n")
  3. val rows: List<List<Int>> = lines.map { line -> line.split(Regex("""\s""")).map { num -> Integer.valueOf(num) } }
  4.  
  5. return rows.fold(0, { sum: Int, list -> sum + lineSummer(list)})
  6. }
  7.  
  8. fun minAndMax(list: List<Int>): Int {
  9. return abs((list.max() ?: 0) - (list.min() ?: 0))
  10. }
  11.  
  12. fun evenlyDivides(list: List<Int>): Int {
  13. val pair : Pair<Int,Int>? = allPairs(list).find { it -> it.first % it.second == 0 || it.second % it.first == 0 }
  14. return when {
  15. pair == null -> 0
  16. pair.first > pair.second -> pair.first / pair.second
  17. else -> pair.second / pair.first
  18. }
  19. }
  20.  
  21. fun <T> allPairs(list: List<T>): List<Pair<T, T>> {
  22. val pairs = arrayListOf<Pair<T, T>>()
  23. for ((index, left) in list.withIndex()) {
  24. if (index != list.size - 1) {
  25. list.subList(index + 1, list.size).mapTo(pairs) { left to it }
  26. }
  27. }
  28. return pairs
  29. }
Add Comment
Please, Sign In to add comment