generated from public/aoc_template
Day 11
This commit is contained in:
parent
606a4bf4b2
commit
10800eb266
60
day11.py
Normal file
60
day11.py
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
from tools.aoc import AOCDay
|
||||||
|
from tools.coordinate import Coordinate, DistanceAlgorithm
|
||||||
|
from tools.grid import Grid
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
|
||||||
|
def expand_universe(grid: Grid, amount: int = 2):
|
||||||
|
"""amount as in 'one empty row should be {amount} empty rows instead"""
|
||||||
|
empty_x = set(grid.rangeX())
|
||||||
|
empty_y = set(grid.rangeY())
|
||||||
|
|
||||||
|
for c in grid.getActiveCells():
|
||||||
|
if c.x in empty_x:
|
||||||
|
empty_x.remove(c.x)
|
||||||
|
|
||||||
|
if c.y in empty_y:
|
||||||
|
empty_y.remove(c.y)
|
||||||
|
|
||||||
|
for c in reversed(sorted(grid.getActiveCells())):
|
||||||
|
shift_x = len([x for x in empty_x if x < c.x]) * (amount - 1)
|
||||||
|
shift_y = len([y for y in empty_y if y < c.y]) * (amount - 1)
|
||||||
|
grid.set(c, False)
|
||||||
|
grid.set(Coordinate(c.x + shift_x, c.y + shift_y), True)
|
||||||
|
|
||||||
|
|
||||||
|
def get_sum_dist(grid) -> int:
|
||||||
|
dist_sum = 0
|
||||||
|
c_list = list(grid.getActiveCells())
|
||||||
|
for i, a in enumerate(c_list[:-1]):
|
||||||
|
for b in c_list[i + 1 :]:
|
||||||
|
dist_sum += a.getDistanceTo(b, algorithm=DistanceAlgorithm.MANHATTAN)
|
||||||
|
|
||||||
|
return dist_sum
|
||||||
|
|
||||||
|
|
||||||
|
class Day(AOCDay):
|
||||||
|
inputs = [
|
||||||
|
[
|
||||||
|
(374, "input11_test"),
|
||||||
|
(9445168, "input11"),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
(742305960572, "input11"),
|
||||||
|
],
|
||||||
|
]
|
||||||
|
|
||||||
|
def part1(self) -> Any:
|
||||||
|
grid = Grid.from_data(self.getInput(), translate={".": False, "#": True})
|
||||||
|
expand_universe(grid)
|
||||||
|
return get_sum_dist(grid)
|
||||||
|
|
||||||
|
def part2(self) -> Any:
|
||||||
|
grid = Grid.from_data(self.getInput(), translate={".": False, "#": True})
|
||||||
|
expand_universe(grid, 1_000_000)
|
||||||
|
return get_sum_dist(grid)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
day = Day(2023, 11)
|
||||||
|
day.run(verbose=True)
|
||||||
140
inputs/input11
Normal file
140
inputs/input11
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
.......#..............#.......................#............#.......#........................#.....#..................................#......
|
||||||
|
.................................#.................................................#........................................................
|
||||||
|
............................................................................................................................................
|
||||||
|
..........................................................................................................#.............#...................
|
||||||
|
...........#...............................................................#..............................................................#.
|
||||||
|
.#..........................................................................................................................................
|
||||||
|
................#.......#........................#....................#....................#.................................#..............
|
||||||
|
......................................#.....#.........................................................#.....................................
|
||||||
|
...................................................................................#..........................#......................#......
|
||||||
|
......#.....................................................................................................................................
|
||||||
|
.............#............................................#.......................................................#.........................
|
||||||
|
..................#.....................#..........#.....................................................#..............#.....#.............
|
||||||
|
.................................................................#.........#................................................................
|
||||||
|
..................................#.................................................................................................#......#
|
||||||
|
....#..........#...........#..........................#.....#................................................#..............................
|
||||||
|
................................................................................#...........................................................
|
||||||
|
.......................................#........#.......................#...........................#.......................................
|
||||||
|
.......................................................................................................................................#....
|
||||||
|
.#..............................#.......................#........#.................#..............................#.........................
|
||||||
|
......#..............#....................#............................................................#.................#..................
|
||||||
|
............#...............................................................................................................................
|
||||||
|
.....................................................................................................................#......................
|
||||||
|
.....................................................#...................................................................................#..
|
||||||
|
...............................................#...........................#.....#..........................................................
|
||||||
|
....................................#........................................................................#..............................
|
||||||
|
...........#.................#.........................................................#...........#............................#...........
|
||||||
|
.....#...............#....................................#...................................#........................................#....
|
||||||
|
..........................................................................................................#................#................
|
||||||
|
.......................................#..............#....................................................................................#
|
||||||
|
.................................#................................................#...................#.............#.......................
|
||||||
|
...#........#...............#.....................#............#.................................#.............#............................
|
||||||
|
............................................................................................................................................
|
||||||
|
.............................................#........................#.....................................................................
|
||||||
|
..........................................................#................................................#..............................#.
|
||||||
|
...................#...................#........................................#..............................................#............
|
||||||
|
....#.....#.......................#...........................................................#.....#.......................................
|
||||||
|
........................................................................................#...................................................
|
||||||
|
..............................................#.........................................................#...................................
|
||||||
|
..........................#................................................#.............................................#..............#...
|
||||||
|
........#.....................................................#.......#..........................................................#..........
|
||||||
|
.............#.............................#..........#..............................#.....................#................................
|
||||||
|
............................................................................................................................................
|
||||||
|
.#..............................................................................#.................#.........................................
|
||||||
|
......................#...............#.....................................................................................................
|
||||||
|
...................................................................#..................................................................#.....
|
||||||
|
..........#.................................................................................#......................#........................
|
||||||
|
.................#........................#............................#....................................................................
|
||||||
|
..........................................................#................................................#............#...................
|
||||||
|
..................................................#........................#...................................................#............
|
||||||
|
..............................................................................................#..................#..........................
|
||||||
|
............................................................................................................................................
|
||||||
|
.....#...............................................................................................#......................................
|
||||||
|
....................................#.......................................................................#........#......................
|
||||||
|
...................#............................................................#..........#................................................
|
||||||
|
.............................#..........................................................................................................#...
|
||||||
|
...............#...............................#..........#......................................#.....#.....................#..............
|
||||||
|
.......#...............#.............................................................#............................................#.........
|
||||||
|
............................................................................................................................................
|
||||||
|
...................................#.......#........#........#.................................................#............................
|
||||||
|
............................................................................................................................................
|
||||||
|
..........#..................#.........................................#..............................................................#.....
|
||||||
|
................................................#..........................................#................#....................#..........
|
||||||
|
.........................................................#...........................#......................................................
|
||||||
|
#....................#...........#.................................................................#..............#......#..................
|
||||||
|
.............................................#.......#...................................................#..................................
|
||||||
|
............................#...........................................................#.....#.............................................
|
||||||
|
.......#........................................................................#...........................................................
|
||||||
|
..........................................................#...................................................#....................#........
|
||||||
|
...#...................................................................................................................#....................
|
||||||
|
...............#.................#..........................................................................................................
|
||||||
|
....................#.................#.......#..................#.........................#.............#.............................#....
|
||||||
|
........................................................#...........................#.......................................................
|
||||||
|
...........................#...............................................#................................................................
|
||||||
|
.#.......#........................................................................................#........................................#
|
||||||
|
................................#................................................................................#...............#..........
|
||||||
|
....................................................#.......................................................................................
|
||||||
|
...................................................................#.....................................#...............#............#.....
|
||||||
|
....................................#......................#.............#..........#.....#.................................................
|
||||||
|
...........#................................................................................................................................
|
||||||
|
.......................#.....................#.................................................................#............................
|
||||||
|
.............................#..............................................#........................#......................................
|
||||||
|
..................#................................................................................................#................#.......
|
||||||
|
..................................................#.........#..........#..................................................#.................
|
||||||
|
.................................#.......................................................#.................................................#
|
||||||
|
....#.......................................#.........#.......................................................................#.............
|
||||||
|
............................................................................................................................................
|
||||||
|
............................................................................................................................................
|
||||||
|
........................................................................#...................................................................
|
||||||
|
..#.............................................#................#....................................................#.....................
|
||||||
|
..............#...............#.............................................................................................................
|
||||||
|
........................#............................#..........................#........#..................................................
|
||||||
|
...................................................................................................#...........#........................#...
|
||||||
|
....#.............#..............#............................................................................................#.............
|
||||||
|
............................................................................................................................................
|
||||||
|
......................................................................................................#.....................................
|
||||||
|
.................................................................#......................#...................................................
|
||||||
|
.....................#....................#...........#.................#...................................................................
|
||||||
|
................................................................................#......................................#..........#........#
|
||||||
|
........#........................................................................................#..........................................
|
||||||
|
..................................#.........................................................#....................#..........#...............
|
||||||
|
#...........................#...........................................................................#...................................
|
||||||
|
............#................................................#.........#...............#....................................................
|
||||||
|
....#.......................................................................................................................................
|
||||||
|
..........................................#.....................................................#..............#..............#.............
|
||||||
|
............................................................................#.........................#.............#.......................
|
||||||
|
................................#.....#.....................................................................................................
|
||||||
|
...................#......#.................................#.......................#.......................#...............................
|
||||||
|
...........................................................................................#......#...............................#.........
|
||||||
|
#.............#.......................................#.....................................................................................
|
||||||
|
.............................#..............#.............................................................................................#.
|
||||||
|
......................#..................................................#............................#..............#......................
|
||||||
|
........#........#.....................#...................#......#.............#............................#............#.................
|
||||||
|
.........................................................................................#......................................#...........
|
||||||
|
..................................#..................#............................................#...............#..................#......
|
||||||
|
..........................#....................#............................................................................................
|
||||||
|
..........................................#.................................................................................................
|
||||||
|
.#...................................................................#.......................#.............#...............................#
|
||||||
|
......#.......................#................................#.....................................................#......................
|
||||||
|
............#.....#...................#............#.....#.......................#.................#........................................
|
||||||
|
..........................................................................................................................#.....#......#....
|
||||||
|
..........................................................................................#.............#...................................
|
||||||
|
...........................................#........................................#.......................................................
|
||||||
|
..#...................................................................#.....................................................................
|
||||||
|
.........#...........................................#......................................................................................
|
||||||
|
....................................#............................................................#.................................#.......#
|
||||||
|
...........................#......................................................................................#.........................
|
||||||
|
..........................................................#............................................................#....................
|
||||||
|
...#..........#........#....................................................................................................................
|
||||||
|
....................................................................................#......#.................#..................#...........
|
||||||
|
..............................................................................#.............................................................
|
||||||
|
.............................#.......#.....#...................#........#......................#.....................................#......
|
||||||
|
............................................................................................................................................
|
||||||
|
..........#.....#...................................................#.............#.....................#....................#..............
|
||||||
|
........................#.................................#.............................#...........................#.......................
|
||||||
|
........................................#...........#........................................#...........................................#..
|
||||||
|
.....#.........................................#.................#.....#............................#.......................................
|
||||||
|
...................................#........................................#........#......................................................
|
||||||
|
...........................................................................................................................#................
|
||||||
|
.#............................#..........................#...................................................#.........................#....
|
||||||
|
.........#...................................#..........................................#.........................#.........................
|
||||||
10
inputs/input11_test
Normal file
10
inputs/input11_test
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
...#......
|
||||||
|
.......#..
|
||||||
|
#.........
|
||||||
|
..........
|
||||||
|
......#...
|
||||||
|
.#........
|
||||||
|
.........#
|
||||||
|
..........
|
||||||
|
.......#..
|
||||||
|
#...#.....
|
||||||
Loading…
Reference in New Issue
Block a user