This commit is contained in:
Christian
2024-12-01 22:06:32 +01:00
parent e6f9daa020
commit 5c5ebfc3b5
2 changed files with 10 additions and 7 deletions

View File

@@ -2,7 +2,7 @@ package dev.ctsk.aoc
case class Timings(prep: Long, p1: Long, p2: Long) 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): abstract class Solver(day: Int):
def run(input: String): (Timings, Solution) def run(input: String): (Timings, Solution)

View File

@@ -13,18 +13,21 @@ object Day01 extends Solver(1):
.toArray .toArray
.unzip match { case (left, right) => (left.sorted, right.sorted) } .unzip match { case (left, right) => (left.sorted, right.sorted) }
def part1(input: Input): String = def part1(input: Input): Int =
input match 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 (left, right) = input;
val counts = right.groupBy(identity).mapValues(_.length).toMap val counts = right.groupMapReduce(identity)(identity)(_ + _)
left.map(n => n * counts.getOrElse(n, 0)).sum.toString left.map(n => counts.getOrElse(n, 0)).sum
def run(input: String): (Timings, Solution) = def run(input: String): (Timings, Solution) =
val (pre_time, pre_input) = timed { pre(input) } val (pre_time, pre_input) = timed { pre(input) }
val (p1_time, p1_solution) = timed { part1(pre_input) } val (p1_time, p1_solution) = timed { part1(pre_input) }
val (p2_time, p2_solution) = timed { part2(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))
)