Day 13: use built in transpose

This commit is contained in:
Paul-Henri Froidmont 2023-12-14 01:25:22 +01:00
parent ff834ac43a
commit d5e1e549d6
Signed by: phfroidmont
GPG key ID: BE948AFD7E7873BE

View file

@ -9,11 +9,6 @@ val dayNumber = "13"
@main def part2: Unit = @main def part2: Unit =
println(part2(loadInput(dayNumber))) println(part2(loadInput(dayNumber)))
def transpose(grid: List[String]): List[String] =
List.tabulate(grid.head.length)(x =>
Array.tabulate(grid.length)(y => grid(y)(x)).mkString
)
def part1(input: String): String = def part1(input: String): String =
def findReflection(rows: List[String]): Option[Int] = def findReflection(rows: List[String]): Option[Int] =
(1 until rows.length).find(i => (1 until rows.length).find(i =>
@ -27,7 +22,7 @@ def part1(input: String): String =
.flatMap(pattern => .flatMap(pattern =>
findReflection(pattern) findReflection(pattern)
.map(_ * 100) .map(_ * 100)
.orElse(findReflection(transpose(pattern))) .orElse(findReflection(pattern.transpose.map(_.mkString)))
) )
.sum .sum
.toString .toString
@ -48,7 +43,7 @@ def part2(input: String): String =
.flatMap(pattern => .flatMap(pattern =>
findReflection(pattern) findReflection(pattern)
.map(_ * 100) .map(_ * 100)
.orElse(findReflection(transpose(pattern))) .orElse(findReflection(pattern.transpose.map(_.mkString)))
) )
.sum .sum
.toString .toString