Simplify some more

This commit is contained in:
Christian
2024-12-05 15:19:57 +01:00
parent 4872056127
commit 24936839a5

View File

@@ -1,16 +1,13 @@
package dev.ctsk.aoc.days package dev.ctsk.aoc.days
import dev.ctsk.aoc._ import dev.ctsk.aoc._
import scala.compiletime.ops.double
import scala.reflect.ClassTag
import scala.collection.mutable.ArrayBuffer import scala.collection.mutable.ArrayBuffer
import java.util.concurrent.ForkJoinPool
object Day04 extends Solver(4): object Day04 extends Solver(4):
private val XMAS = "XMAS".r private val XMAS = "XMAS".r
private val REV_XMAS = "XMAS".reverse.r private val REV_XMAS = "XMAS".reverse.r
def diagonals[A: ClassTag](m: Vector[Vector[A]]): Vector[Vector[A]] = def diagonals[A](m: Vector[Vector[A]]): Vector[Vector[A]] =
val diagonals = Vector.fill(m.length + m(0).length - 1)(ArrayBuffer[A]()) val diagonals = Vector.fill(m.length + m(0).length - 1)(ArrayBuffer[A]())
for for
@@ -30,20 +27,16 @@ object Day04 extends Solver(4):
lines.transpose, lines.transpose,
diagonals(lines), diagonals(lines),
diagonals(lines.reverse) diagonals(lines.reverse)
).flatMap(_.toList).map(count).sum ).flatMap(_.map(count)).sum
def part2(grid: Vector[Vector[Char]]): Int = def part2(grid: Vector[Vector[Char]]): Int =
var count = 0 (for
for
i <- 1 until grid.length - 1 i <- 1 until grid.length - 1
j <- 1 until grid(i).length - 1 j <- 1 until grid(i).length - 1
if grid(i)(j) == 'A' if grid(i)(j) == 'A'
& (grid(i - 1)(j - 1) + grid(i + 1)(j + 1) == 'S' + 'M') && grid(i - 1)(j - 1) + grid(i + 1)(j + 1) == 'S' + 'M'
& (grid(i - 1)(j + 1) + grid(i + 1)(j - 1) == 'S' + 'M') && grid(i - 1)(j + 1) + grid(i + 1)(j - 1) == 'S' + 'M'
do count += 1 yield ()).length
count
def run(input: String): (Timings, Solution) = def run(input: String): (Timings, Solution) =
var in = io.Source var in = io.Source