36 lines
702 B
Scala
36 lines
702 B
Scala
package aoc
|
|
package day01
|
|
|
|
val dayNumber = "01"
|
|
|
|
@main def part1: Unit =
|
|
println(part1(loadInput(dayNumber)))
|
|
|
|
@main def part2: Unit =
|
|
println(part2(loadInput(dayNumber)))
|
|
|
|
def part1(input: String): String =
|
|
val Array(ls, rs) = input
|
|
.split("\n")
|
|
.map { case s"$left $right" =>
|
|
Array(left.toInt, right.toInt)
|
|
}
|
|
.transpose
|
|
|
|
ls.sorted
|
|
.zip(rs.sorted)
|
|
.map { case (left, right) =>
|
|
Math.abs(right - left)
|
|
}
|
|
.sum
|
|
.toString
|
|
|
|
def part2(input: String): String =
|
|
val Array(ls, rs) = input
|
|
.split("\n")
|
|
.map { case s"$left $right" =>
|
|
Array(left.toInt, right.toInt)
|
|
}
|
|
.transpose
|
|
|
|
ls.map(n => n * rs.count(_ == n)).sum.toString
|