day 8
parent
7373859412
commit
7e2e395314
|
@ -0,0 +1,50 @@
|
||||||
|
.AU..Z.....8.......................t..C.6.........
|
||||||
|
..................................................
|
||||||
|
.....K.U....................v.....................
|
||||||
|
...Z..A.............................v8.....t......
|
||||||
|
p..................a8...........b...t.............
|
||||||
|
..pU.....A..4.....................................
|
||||||
|
..........................E.......................
|
||||||
|
...........K..V..............v8.....Cb............
|
||||||
|
....V................b...p........................
|
||||||
|
....7.............................................
|
||||||
|
....4.....A..........V......K..E.....6............
|
||||||
|
.4.........................Vb...........0..C......
|
||||||
|
..................................k........N......
|
||||||
|
K....7...........9...........6.....kE.............
|
||||||
|
......7......1...................k.......C........
|
||||||
|
...p....................9....0.....N6.............
|
||||||
|
..........Z........e..1...........................
|
||||||
|
.............................E................N...
|
||||||
|
...4...............................v0..........z..
|
||||||
|
........U.....Z......1................z..a........
|
||||||
|
.....5.......7......................N.............
|
||||||
|
....................n.............................
|
||||||
|
.......................0.9...c..........z.d.T.....
|
||||||
|
...................n.W......a...t......D....d.....
|
||||||
|
..........I.....e......................o9.........
|
||||||
|
....5..2................e...........D.............
|
||||||
|
...........................n......D...............
|
||||||
|
......25I...1..................c......W.......o...
|
||||||
|
................n..............D..................
|
||||||
|
...........I........i..e..........................
|
||||||
|
......5......2.....P..............a...............
|
||||||
|
...........................z..................T...
|
||||||
|
..........j.....................Wd...........O..o.
|
||||||
|
................................................c.
|
||||||
|
.................I................B...............
|
||||||
|
...........u.............................T.d......
|
||||||
|
.............................................J....
|
||||||
|
.....3.i....u......................o..............
|
||||||
|
3...i.............................................
|
||||||
|
..................................................
|
||||||
|
...........j...............W....O............w....
|
||||||
|
...P........................J.....................
|
||||||
|
.....u............................................
|
||||||
|
.............................w....................
|
||||||
|
......u.................2...w...J.................
|
||||||
|
.....j.....B3......................O..............
|
||||||
|
P....B..............................c.............
|
||||||
|
................B.............w...................
|
||||||
|
.....i.............3..............................
|
||||||
|
..P.j....................J..........O.............
|
|
@ -0,0 +1,12 @@
|
||||||
|
............
|
||||||
|
........0...
|
||||||
|
.....0......
|
||||||
|
.......0....
|
||||||
|
....0.......
|
||||||
|
......A.....
|
||||||
|
............
|
||||||
|
............
|
||||||
|
........A...
|
||||||
|
.........A..
|
||||||
|
............
|
||||||
|
............
|
|
@ -0,0 +1,10 @@
|
||||||
|
..........
|
||||||
|
...#......
|
||||||
|
..........
|
||||||
|
....a.....
|
||||||
|
..........
|
||||||
|
.....a....
|
||||||
|
..........
|
||||||
|
......#...
|
||||||
|
..........
|
||||||
|
..........
|
|
@ -0,0 +1,10 @@
|
||||||
|
..........
|
||||||
|
...#......
|
||||||
|
#.........
|
||||||
|
....a.....
|
||||||
|
........a.
|
||||||
|
.....a....
|
||||||
|
..#.......
|
||||||
|
......#...
|
||||||
|
..........
|
||||||
|
..........
|
|
@ -0,0 +1,10 @@
|
||||||
|
..........
|
||||||
|
...#......
|
||||||
|
#.........
|
||||||
|
....a.....
|
||||||
|
........a.
|
||||||
|
.....a....
|
||||||
|
..#.......
|
||||||
|
......A...
|
||||||
|
..........
|
||||||
|
..........
|
|
@ -0,0 +1,12 @@
|
||||||
|
......#....#
|
||||||
|
...#....0...
|
||||||
|
....#0....#.
|
||||||
|
..#....0....
|
||||||
|
....0....#..
|
||||||
|
.#....A.....
|
||||||
|
...#........
|
||||||
|
#......#....
|
||||||
|
........A...
|
||||||
|
.........A..
|
||||||
|
..........#.
|
||||||
|
..........#.
|
|
@ -0,0 +1,68 @@
|
||||||
|
def parse(file):
|
||||||
|
grid = []
|
||||||
|
for line in file:
|
||||||
|
grid.append(line.strip())
|
||||||
|
return grid
|
||||||
|
|
||||||
|
import itertools
|
||||||
|
|
||||||
|
import string
|
||||||
|
signal_chars = string.ascii_letters + string.digits
|
||||||
|
|
||||||
|
def solve(file):
|
||||||
|
grid = parse(file)
|
||||||
|
ny = len(grid)
|
||||||
|
nx = len(grid[0])
|
||||||
|
|
||||||
|
antennae = {}
|
||||||
|
for y in range(ny):
|
||||||
|
for x in range(nx):
|
||||||
|
c = grid[y][x]
|
||||||
|
if c in signal_chars:
|
||||||
|
antennae.setdefault(c, []).append((x,y))
|
||||||
|
|
||||||
|
poles = set()
|
||||||
|
for c, locations in antennae.items():
|
||||||
|
for (x0,y0), (x1,y1) in itertools.combinations(locations, 2):
|
||||||
|
x = x1 + (x1-x0)
|
||||||
|
y = y1 + (y1-y0)
|
||||||
|
#print(c, (x0,y0),(x1,y1), "=>", (x,y))
|
||||||
|
if 0 <= x < nx and 0 <= y < ny:
|
||||||
|
poles.add((x,y))
|
||||||
|
|
||||||
|
x = x0 + (x0-x1)
|
||||||
|
y = y0 + (y0-y1)
|
||||||
|
if 0 <= x < nx and 0 <= y < ny:
|
||||||
|
poles.add((x,y))
|
||||||
|
|
||||||
|
#for y,line in enumerate(grid):
|
||||||
|
# print("".join(c if (x,y) not in poles else '#' for (x,c) in enumerate(line)))
|
||||||
|
|
||||||
|
print(len(poles))
|
||||||
|
|
||||||
|
|
||||||
|
poles = set()
|
||||||
|
for c, locations in antennae.items():
|
||||||
|
for (x0,y0), (x1,y1) in itertools.combinations(locations, 2):
|
||||||
|
for _ in 1,2:
|
||||||
|
dx = (x1-x0)
|
||||||
|
dy = (y1-y0)
|
||||||
|
x = x1
|
||||||
|
y = y1
|
||||||
|
while 0 <= x < nx and 0 <= y < ny:
|
||||||
|
#print(c, (x0,y0),(x1,y1), "=>", (x,y))
|
||||||
|
poles.add((x,y))
|
||||||
|
x += dx
|
||||||
|
y += dy
|
||||||
|
|
||||||
|
x0,y0, x1,y1 = x1,y1, x0,y0
|
||||||
|
|
||||||
|
#for y,line in enumerate(grid):
|
||||||
|
# print("".join(c if (x,y) not in poles else '#' for (x,c) in enumerate(line)))
|
||||||
|
|
||||||
|
print(len(poles))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
solve(open("sample1.in"))
|
||||||
|
solve(open("input"))
|
Loading…
Reference in New Issue