day10, FINALLY!

This commit is contained in:
Stefan Harmuth 2021-11-30 01:01:08 +01:00
parent fbffd6e4fd
commit 59962502d5
9 changed files with 165 additions and 1 deletions

View File

@ -12,7 +12,7 @@ class Day(AOCDay):
memory = self.getInputAsArraySplit(',', int)
memory[1] = 12
memory[2] = 2
comp = IntCode(memory, 100)
comp = IntCode(memory)
comp.run()
return comp.memory[0]

55
day10.py Normal file
View File

@ -0,0 +1,55 @@
from aoc import AOCDay
from coordinate import Coordinate
from grid import Grid
from typing import Any, List
def radarPing(grid: Grid, origin: Coordinate) -> List[Coordinate]:
angleList = {}
for asteroid in grid.getActiveCells():
if asteroid == origin:
continue
angle = origin.getAngleTo(asteroid, normalized=True)
if angle in angleList and origin.getDistanceTo(asteroid) > origin.getDistanceTo(angleList[angle]):
continue
angleList[angle] = asteroid
return [angleList[k] for k in sorted(angleList.keys())]
def getMaxAsteroidsSeen(grid: Grid) -> (Coordinate, int):
maxSeen = []
maxCoord = None
for check in grid.getActiveCells():
asteroids_seen = radarPing(grid, check)
if len(asteroids_seen) > len(maxSeen):
maxSeen = asteroids_seen
maxCoord = check
return maxCoord, len(maxSeen)
class Day(AOCDay):
test_solutions_p1 = [8, 33, 35, 41, 210]
test_solutions_p2 = [802]
def part1(self) -> Any:
grid = Grid()
for y, l in enumerate(self.input):
for x, c in enumerate(l):
grid.set(Coordinate(x, y), c == '#')
return getMaxAsteroidsSeen(grid)[1]
def part2(self) -> Any:
grid = Grid()
for y, l in enumerate(self.input):
for x, c in enumerate(l):
grid.set(Coordinate(x, y), c == '#')
asteroids_seen = radarPing(grid, getMaxAsteroidsSeen(grid)[0])
twohundreth = asteroids_seen[199]
return twohundreth.x * 100 + twohundreth.y

34
inputs/input10 Normal file
View File

@ -0,0 +1,34 @@
#....#.....#...#.#.....#.#..#....#
#..#..##...#......#.....#..###.#.#
#......#.#.#.....##....#.#.....#..
..#.#...#.......#.##..#...........
.##..#...##......##.#.#...........
.....#.#..##...#..##.....#...#.##.
....#.##.##.#....###.#........####
..#....#..####........##.........#
..#...#......#.#..#..#.#.##......#
.............#.#....##.......#...#
.#.#..##.#.#.#.#.......#.....#....
.....##.###..#.....#.#..###.....##
.....#...#.#.#......#.#....##.....
##.#.....#...#....#...#..#....#.#.
..#.............###.#.##....#.#...
..##.#.........#.##.####.........#
##.#...###....#..#...###..##..#..#
.........#.#.....#........#.......
#.......#..#.#.#..##.....#.#.....#
..#....#....#.#.##......#..#.###..
......##.##.##...#...##.#...###...
.#.....#...#........#....#.###....
.#.#.#..#............#..........#.
..##.....#....#....##..#.#.......#
..##.....#.#......................
.#..#...#....#.#.....#.........#..
........#.............#.#.........
#...#.#......#.##....#...#.#.#...#
.#.....#.#.....#.....#.#.##......#
..##....#.....#.....#....#.##..#..
#..###.#.#....#......#...#........
..#......#..#....##...#.#.#...#..#
.#.##.#.#.....#..#..#........##...
....#...##.##.##......#..#..##....

5
inputs/test_input10_1_0 Normal file
View File

@ -0,0 +1,5 @@
.#..#
.....
#####
....#
...##

10
inputs/test_input10_1_1 Normal file
View File

@ -0,0 +1,10 @@
......#.#.
#..#.#....
..#######.
.#.#.###..
.#..#.....
..#....#.#
#..#....#.
.##.#..###
##...#..#.
.#....####

10
inputs/test_input10_1_2 Normal file
View File

@ -0,0 +1,10 @@
#.#...#.#.
.###....#.
.#....#...
##.#.#.#.#
....#.#.#.
.##..###.#
..#...##..
..##....##
......#...
.####.###.

10
inputs/test_input10_1_3 Normal file
View File

@ -0,0 +1,10 @@
.#..#..###
####.###.#
....###.#.
..###.##.#
##.##.#.#.
....###..#
..#.#..#.#
#..#.#.###
.##...##.#
.....#.#..

20
inputs/test_input10_1_4 Normal file
View File

@ -0,0 +1,20 @@
.#..##.###...#######
##.############..##.
.#.######.########.#
.###.#######.####.#.
#####.##.#.##.###.##
..#####..#.#########
####################
#.####....###.#.#.##
##.#################
#####.##.###..####..
..######..##.#######
####.##.####...##..#
.#####..#.######.###
##...#.##########...
#.##########.#######
.####.#.###.###.#.##
....##.##.###..#####
.#.#.###########.###
#.#.#.#####.####.###
###.##.####.##.#..##

20
inputs/test_input10_2_0 Normal file
View File

@ -0,0 +1,20 @@
.#..##.###...#######
##.############..##.
.#.######.########.#
.###.#######.####.#.
#####.##.#.##.###.##
..#####..#.#########
####################
#.####....###.#.#.##
##.#################
#####.##.###..####..
..######..##.#######
####.##.####...##..#
.#####..#.######.###
##...#.##########...
#.##########.#######
.####.#.###.###.#.##
....##.##.###..#####
.#.#.###########.###
#.#.#.#####.####.###
###.##.####.##.#..##