From 164276906a5b216efb1bda1a1e2b4dd5f82c211a Mon Sep 17 00:00:00 2001 From: Simmo Saan <simmo.saan@gmail.com> Date: Sun, 23 Mar 2025 10:42:57 +0200 Subject: [PATCH 1/2] Prematurely optimize 2024 day 25 part 1 --- src/main/scala/eu/sim642/adventofcode2024/Day25.scala | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/main/scala/eu/sim642/adventofcode2024/Day25.scala b/src/main/scala/eu/sim642/adventofcode2024/Day25.scala index c74ccb1a..6607a194 100644 --- a/src/main/scala/eu/sim642/adventofcode2024/Day25.scala +++ b/src/main/scala/eu/sim642/adventofcode2024/Day25.scala @@ -13,11 +13,7 @@ object Day25 { def countLockKeyFits(lockKeys: Seq[Grid[Boolean]]): Int = { val (keys, locks) = lockKeys.partition(isKey) - (for { - key <- keys - lock <- locks - if fits(key, lock) - } yield ()).size + keys.view.map(key => locks.count(fits(key, _))).sum } def parseLockKey(s: String): Grid[Boolean] = s.linesIterator.map(_.map(_ == '#').toVector).toVector From 50418557918486fdb2eca51601932f64f2514d7e Mon Sep 17 00:00:00 2001 From: Simmo Saan <simmo.saan@gmail.com> Date: Sun, 23 Mar 2025 11:07:26 +0200 Subject: [PATCH 2/2] Add transit node routing comment --- src/main/scala/eu/sim642/adventofcode2019/Day18.scala | 1 + src/main/scala/eu/sim642/adventofcode2021/Day23.scala | 1 + src/main/scala/eu/sim642/adventofcode2022/Day16.scala | 1 + 3 files changed, 3 insertions(+) diff --git a/src/main/scala/eu/sim642/adventofcode2019/Day18.scala b/src/main/scala/eu/sim642/adventofcode2019/Day18.scala index 67855209..b083cccc 100644 --- a/src/main/scala/eu/sim642/adventofcode2019/Day18.scala +++ b/src/main/scala/eu/sim642/adventofcode2019/Day18.scala @@ -23,6 +23,7 @@ object Day18 { trait KeyNeighborsSolution extends Solution { case class PathData(distance: Int, pathDoors: Set[Pos], pathKeys: Set[Pos]) + // https://en.wikipedia.org/wiki/Transit_node_routing def getKeyNeighbors(input: Input): collection.Map[Pos, collection.Map[Pos, PathData]] override def collectKeysSteps(input: Input): Int = { diff --git a/src/main/scala/eu/sim642/adventofcode2021/Day23.scala b/src/main/scala/eu/sim642/adventofcode2021/Day23.scala index 78440534..569869ad 100644 --- a/src/main/scala/eu/sim642/adventofcode2021/Day23.scala +++ b/src/main/scala/eu/sim642/adventofcode2021/Day23.scala @@ -33,6 +33,7 @@ object Day23 { private case class PathData(length: Int, pathPoss: Set[Pos]) + // https://en.wikipedia.org/wiki/Transit_node_routing private val posNeighbors: collection.Map[Pos, collection.Map[Pos, PathData]] = { val allPoss: Set[Pos] = hallways ++ room2amphipod.keySet diff --git a/src/main/scala/eu/sim642/adventofcode2022/Day16.scala b/src/main/scala/eu/sim642/adventofcode2022/Day16.scala index 5621fecc..0f08baea 100644 --- a/src/main/scala/eu/sim642/adventofcode2022/Day16.scala +++ b/src/main/scala/eu/sim642/adventofcode2022/Day16.scala @@ -12,6 +12,7 @@ object Day16 { case class ValveData(flowRate: Int, tunnels: Seq[Valve]) + // https://en.wikipedia.org/wiki/Transit_node_routing def valveDists(valves: Map[Valve, ValveData]): collection.Map[Valve, collection.Map[Valve, Int]] = { val dists: mutable.Map[Valve, mutable.Map[Valve, Int]] = valves.view.mapValues(_.tunnels.map(_ -> 1).to(mutable.Map)).to(mutable.Map) // Floyd-Warshall