Day 11
This commit is contained in:
parent
30b5d266f2
commit
506e288f61
34
Day11.scala
Normal file
34
Day11.scala
Normal file
|
@ -0,0 +1,34 @@
|
|||
package aoc.day11
|
||||
|
||||
import aoc._
|
||||
import scala.annotation.tailrec
|
||||
|
||||
val board = lines.toSeq
|
||||
|
||||
// part 1
|
||||
|
||||
val countByRow = board.map(_.count(_ == '#')).toList
|
||||
val countByCol = (0 until board(0).length()).map(col => board.count(row => row(col) == '#')).toList
|
||||
|
||||
@tailrec def totalDist(expandBy: Int)(count: Long, leftDist: Long, accum: Long)(counts: List[Int]): Long =
|
||||
counts match
|
||||
case Nil => accum
|
||||
case 0 :: next => totalDist(expandBy)(count, leftDist + expandBy * count /* expanded case */, accum)(next)
|
||||
case cur :: next =>
|
||||
totalDist(expandBy)(count + cur, leftDist + count + cur, accum + cur * leftDist)(next)
|
||||
|
||||
def totalDist(expandBy: Int)(counts: List[Int]): Long = totalDist(expandBy)(0, 0, 0)(counts)
|
||||
|
||||
def part1 =
|
||||
inline def count(r: List[Int]): Long = totalDist(2)(r)
|
||||
val res = count(countByRow) + count(countByCol)
|
||||
println(res)
|
||||
|
||||
def part2 =
|
||||
inline def count(r: List[Int]): Long = totalDist(1_000_000)(r)
|
||||
val res = count(countByRow) + count(countByCol)
|
||||
println(res)
|
||||
|
||||
@main def Day11(part: Int) = part match
|
||||
case 1 => part1
|
||||
case 2 => part2
|
140
inputs/day11.input
Normal file
140
inputs/day11.input
Normal file
|
@ -0,0 +1,140 @@
|
|||
........................#...............................................#................................#................................#.
|
||||
....#..............#......................#............#....................................................................#...............
|
||||
................................#.............................................................#.............................................
|
||||
.........#.....................................#...................#........................................................................
|
||||
....................................................#.......................#..............................#................................
|
||||
..#................................................................................................#................#......................#
|
||||
.........................................................#.........................#.....#..................................................
|
||||
..................................#.............................#...............................................#.............#.............
|
||||
.......#.....#...........................#..............................................................#.............................#.....
|
||||
......................#...............................#................................................................#....................
|
||||
............................#.................#........................#.....................................#..............................
|
||||
....#.................................#...............................................#.....................................................
|
||||
...............#...........................................................#............................................................#...
|
||||
..................................#...........................................................#...................#...........#.............
|
||||
....................................................................................................................................#.......
|
||||
................................................................#................#..........................#...............................
|
||||
...#..............#........#.........#.............#........................................................................................
|
||||
.........................................................#.............#.............#..............#...................#...................
|
||||
........#...................................................................................................................................
|
||||
..............................................................................................#.................................#........#..
|
||||
....................#.......................................#.....................................................#.........................
|
||||
#..............................#.......#......#...................................#......#..................................................
|
||||
...........#.......................................#......................................................................#.................
|
||||
.......................................................................................................................................#....
|
||||
............................................................................................................................................
|
||||
.........................#...................................#...............................#..............................................
|
||||
..................................#.......................................................................#.............#...................
|
||||
.........................................#...........................#...............................#.........#..........................#.
|
||||
............#......#............................................#...............................#...................................#.......
|
||||
.............................#.....................................................#........................................................
|
||||
....#........................................#...............................#.................................................#............
|
||||
......................#............................#.....#.........#........................................................................
|
||||
.........................................................................................................#..................................
|
||||
.......#........................#................................................#..........................................................
|
||||
...............................................#..........................#................#..........................................#.....
|
||||
.#................#.............................................................................................#......#....................
|
||||
..............................................................................................................................#.............
|
||||
..........................#........................#.............................................#..........................................
|
||||
.............#..........................#............................................#..............................#.......................
|
||||
........#..............................................#.....................#..........................#..................#................
|
||||
............................................................#.....#..................................................................#......
|
||||
....................#.........................#..........................#..................#...................#...........................
|
||||
..............................#...................................................#................#........................................
|
||||
.........................................#..............................................#..................................................#
|
||||
.#........#.........................................#.....................................................#.....................#...........
|
||||
.........................................................#.........................................................#........................
|
||||
......#...........................#.........................................................................................................
|
||||
................................................#........................................................................................#..
|
||||
...................................................................#...............#........................................................
|
||||
.....................#................................#..............................................................................#......
|
||||
...........#................................................................................#.....#.........................................
|
||||
....#........................#............................................#..............................................#..................
|
||||
................#.......#........................................................#........................................................#.
|
||||
#...................................................................................................................#.......................
|
||||
....................#...................#..............#.................................#...................#..............................
|
||||
.............#....................#.................................................#..................#...................#................
|
||||
.................................................................................................................#.....................#....
|
||||
................................................................................#...........................................................
|
||||
.......................#.............#....................#.................................................................................
|
||||
.......#.............................................................................................#..............#.......................
|
||||
...................#.....................................................................................................................#..
|
||||
......................................................#..................#.......................................................#..........
|
||||
..........................#..................................................................#..............................................
|
||||
............#.................................#.........................................#...................#............#..................
|
||||
.....................#......................................#......................................................#..........#.............
|
||||
.#.........................................................................#......#...................#.....................................
|
||||
............................................................................................................................................
|
||||
................................#...........................................................#...............................................
|
||||
........................................#..........................#..................................................#.................#...
|
||||
....#........................................#.....................................................#.............................#..........
|
||||
..........................................................#.................................................................................
|
||||
...............#............................................................................................................................
|
||||
..........#............#............................#.............................#...........................................#......#......
|
||||
....................................#........................................................#...............#..............................
|
||||
...........................................#..............................#...............................................................#.
|
||||
.#...........................#.......................................................................#......................................
|
||||
.........................................................#...........#....................................#.................................
|
||||
......#.......#...................#...........................#.......................#.........#..................#........................
|
||||
............................................................................#.........................................................#.....
|
||||
.....................#.........................................................................................#........#...................
|
||||
..........................#.............................................#................#........................................#.........
|
||||
............................................................................................................................................
|
||||
....#.....#.....#..................................#.........#.....................#....................#...................................
|
||||
........................................#.....................................................................................#.............
|
||||
...............................................................................................#............................................
|
||||
.......#........................#...........................................#............................................................#..
|
||||
....................#......#....................#...........................................................................................
|
||||
.........................................................#...........#..........#.............................#...........#.................
|
||||
......................................................................................#.....................................................
|
||||
....................................................................................................#................#..........#.....#.....
|
||||
............#.........#.....................#...............#..............................................#................................
|
||||
.......#............................#.......................................................................................................
|
||||
.......................................................................#......................#................#...................#........
|
||||
............................................................................................................................................
|
||||
........................................................................................................................#...................
|
||||
..........#..........#.......................#.........................................................................................#....
|
||||
...................................................................#.................#...........#..........................................
|
||||
........................................#................#..................................................................................
|
||||
................#....................................................................................................#......................
|
||||
............................................................................................................................................
|
||||
.......#....................#.................................................................#...............#.........................#...
|
||||
.................................#...........#.....#...........................................................................#............
|
||||
...........#.......................................................#....................#...................................................
|
||||
........................................#...............................................................................#...................
|
||||
............................................................................................................................................
|
||||
.....................................................................................................#......................................
|
||||
................#.........................................#..................#................................................#.......#.....
|
||||
....#................................#.............#...................................#.....................#.......#......................
|
||||
.........................#......................................#...........................................................................
|
||||
...........................................................................................#.......#........................................
|
||||
..........#.....................#..............#........................#...................................................................
|
||||
..#.........................................................................................................................................
|
||||
....................#.....................................#.......................#.........................................................
|
||||
..........................#.............#...............................................................................#.........#.........
|
||||
......................................................................................#.....................................................
|
||||
.....................................................................#..........................#...........................................
|
||||
.......#.........#...........................................................#.......................#........#............#............#...
|
||||
........................#....................................#..............................................................................
|
||||
.......................................#............................................#....................#.........................#........
|
||||
..............................................#....................................................................#........................
|
||||
..............#..................#.....................................#..........................#.........................................
|
||||
..........................................#..........#..........................#...........................................................
|
||||
.....#......................................................................................#................#..............................
|
||||
.....................#................................................................#.......................................#.............
|
||||
.....................................................................#......................................................................
|
||||
...........#.....#............................#.....................................................................................#.......
|
||||
................................#.....#..........................#........#..........................................#....................#.
|
||||
...........................#.................................................................#........#.......#.............................
|
||||
#...........................................................................................................................................
|
||||
........#........................................#...................................#......................................................
|
||||
.............................................................................................................................#..............
|
||||
.................................#..............................#........................#.........#........#...............................
|
||||
............#.....#..........................#.......................#....................................................................#.
|
||||
........................#........................................................#..........................................................
|
||||
............................................................#..............#......................................#.........................
|
||||
...#........................................................................................#...............................................
|
||||
...........................................................................................................#......................#.........
|
||||
..........#.......................................................................................#.........................................
|
||||
......................#................#............................................#.................................................#.....
|
||||
...........................#.....................#........#...................................................#.............................
|
Loading…
Reference in a new issue