Day 13
This commit is contained in:
parent
9dfaa313a8
commit
ff834ac43a
2 changed files with 1441 additions and 0 deletions
1387
input/day13
Normal file
1387
input/day13
Normal file
File diff suppressed because it is too large
Load diff
54
src/day13.scala
Normal file
54
src/day13.scala
Normal file
|
|
@ -0,0 +1,54 @@
|
||||||
|
package aoc
|
||||||
|
package day13
|
||||||
|
|
||||||
|
val dayNumber = "13"
|
||||||
|
|
||||||
|
@main def part1: Unit =
|
||||||
|
println(part1(loadInput(dayNumber)))
|
||||||
|
|
||||||
|
@main def part2: Unit =
|
||||||
|
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 findReflection(rows: List[String]): Option[Int] =
|
||||||
|
(1 until rows.length).find(i =>
|
||||||
|
val (up, down) = rows.splitAt(i)
|
||||||
|
up.reverse.zip(down).forall(_ == _)
|
||||||
|
)
|
||||||
|
|
||||||
|
input
|
||||||
|
.split("\n\n")
|
||||||
|
.map(_.split('\n').toList)
|
||||||
|
.flatMap(pattern =>
|
||||||
|
findReflection(pattern)
|
||||||
|
.map(_ * 100)
|
||||||
|
.orElse(findReflection(transpose(pattern)))
|
||||||
|
)
|
||||||
|
.sum
|
||||||
|
.toString
|
||||||
|
|
||||||
|
def part2(input: String): String =
|
||||||
|
def findReflection(rows: List[String]): Option[Int] =
|
||||||
|
(1 until rows.length).find(i =>
|
||||||
|
val (up, down) = rows.splitAt(i)
|
||||||
|
val linesToCompare = up.reverse.zip(down)
|
||||||
|
val area = linesToCompare.length * linesToCompare.head._1.length
|
||||||
|
val differencesCount = linesToCompare.map(_.zip(_).count(_ == _)).sum
|
||||||
|
area - differencesCount == 1
|
||||||
|
)
|
||||||
|
|
||||||
|
input
|
||||||
|
.split("\n\n")
|
||||||
|
.map(_.split('\n').toList)
|
||||||
|
.flatMap(pattern =>
|
||||||
|
findReflection(pattern)
|
||||||
|
.map(_ * 100)
|
||||||
|
.orElse(findReflection(transpose(pattern)))
|
||||||
|
)
|
||||||
|
.sum
|
||||||
|
.toString
|
||||||
Loading…
Add table
Add a link
Reference in a new issue