Bladeren bron

Solve day 8

Taddeus Kroes 1 jaar geleden
bovenliggende
commit
73f412002a
2 gewijzigde bestanden met toevoegingen van 82 en 0 verwijderingen
  1. 32 0
      2024/08_antinodes.py
  2. 50 0
      2024/input/8

+ 32 - 0
2024/08_antinodes.py

@@ -0,0 +1,32 @@
+#!/usr/bin/env python3
+import sys
+from functools import partial
+from itertools import chain, permutations, starmap
+
+def parse(f):
+    antennas = {}
+    for y, line in enumerate(f):
+        for x, char in enumerate(line[:-1]):
+            if char != '.':
+                antennas.setdefault(char, []).append((x, y))
+    return antennas, x + 1, y + 1
+
+def subtract_pairs(antennas):
+    for locs in antennas.values():
+        for (xa, ya), (xb, yb) in permutations(locs, 2):
+            yield xb, yb, xb - xa, yb - ya
+
+def antinodes1(w, h, x, y, dx, dy):
+    if 0 <= x + dx < w and 0 <= y + dy < h:
+        yield x + dx, y + dy
+
+def antinodes2(w, h, x, y, dx, dy):
+    while 0 <= x < w and 0 <= y < h:
+        yield x, y
+        x += dx
+        y += dy
+
+antennas, w, h = parse(sys.stdin)
+pairs = list(subtract_pairs(antennas))
+print(len(set(chain.from_iterable(starmap(partial(antinodes1, w, h), pairs)))))
+print(len(set(chain.from_iterable(starmap(partial(antinodes2, w, h), pairs)))))

+ 50 - 0
2024/input/8

@@ -0,0 +1,50 @@
+...............3................d.................
+.........................s..7......i.....e........
+................C.......................e.........
+...............Z.......m....................e.....
+....................gC.....q......................
+...............Q....s..........................A..
+................................s........A........
+...........n.....3.C..F......w..m...d.............
+..E...............3.....m......d.i................
+............f.3.......C....d........A.............
+.........Z...........................n..A.........
+....Q......p..............g.i.....................
+.r......n...Q....p............S.7...........O.....
+..........r......K....p.....M..........7....G.....
+....................Fs...................G........
+..z.........D..........G.g........................
+rR.............F................M...............G.
+.........I..c.nr...............M................O.
+...I..............................................
+...................f......I.......................
+z.I...............f..K..........0................7
+k...................K......u.........O............
+.........Q...z.................ga......0.......o..
+....E.5..F..................u..b.P......a.1.......
+..........k9..................K.........H......1..
+.E.........h..........................0......a...H
+..........9...h..e........i......M....1...........
+.c.............z.......................j.........T
+c..D......................Pb.................2....
+....................w.y......W......j.........T.2.
+......ph...N..................y.......W.t.2.......
+............9.................................o..1
+.................Vq.......u....Pb.................
+.......6R.........................................
+........5............w...a.W.............H.j......
+......Z.......Y..........V............H..2........
+..........D.................v..y.........t...T..o.
+.......5...................t......................
+........8k...l...............v.........S....T...4.
+......6....U......PR........b.B....y..............
+..........6.V...U........................L........
+.......8.........N....4.Vq.v..t......oJ.....L.....
+N...........R.................w.JY................
+............N.....................................
+.....5Y.....................................j.....
+.98........Y.....l.............B...........S...L..
+.8...............U...............4................
+..................W.........U4....................
+...E........l..........B......................L..u
+.....D............l....J..q.....................S.