diff --git a/src/main/scala/Solution.scala b/src/main/scala/Solution.scala index e3db78c..bc3a774 100644 --- a/src/main/scala/Solution.scala +++ b/src/main/scala/Solution.scala @@ -2,7 +2,7 @@ package dev.ctsk.aoc case class Timings(prep: Long, p1: Long, p2: Long) -case class Solution(p1: String, p2: String) +case class Solution(p1: Object, p2: Object) abstract class Solver(day: Int): def run(input: String): (Timings, Solution) diff --git a/src/main/scala/days/Day01.scala b/src/main/scala/days/Day01.scala index 933e75e..eab55d2 100644 --- a/src/main/scala/days/Day01.scala +++ b/src/main/scala/days/Day01.scala @@ -13,18 +13,21 @@ object Day01 extends Solver(1): .toArray .unzip match { case (left, right) => (left.sorted, right.sorted) } - def part1(input: Input): String = + def part1(input: Input): Int = input match - case (left, right) => left.zip(right).map(_ - _).map(_.abs).sum.toString + case (left, right) => left.zip(right).map(_ - _).map(_.abs).sum - def part2(input: Input): String = + def part2(input: Input): Int = val (left, right) = input; - val counts = right.groupBy(identity).mapValues(_.length).toMap - left.map(n => n * counts.getOrElse(n, 0)).sum.toString + val counts = right.groupMapReduce(identity)(identity)(_ + _) + left.map(n => counts.getOrElse(n, 0)).sum def run(input: String): (Timings, Solution) = val (pre_time, pre_input) = timed { pre(input) } val (p1_time, p1_solution) = timed { part1(pre_input) } val (p2_time, p2_solution) = timed { part2(pre_input) } - (Timings(pre_time, p1_time, p2_time), Solution(p1_solution, p2_solution)) + ( + Timings(pre_time, p1_time, p2_time), + Solution(Int.box(p1_solution), Int.box(p2_solution)) + )