Simplify
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user