Day 20 - foreign input

This commit is contained in:
Stefan Harmuth 2023-12-20 18:19:36 +01:00
parent d1a6dbe4bc
commit 53d5466da0
2 changed files with 64 additions and 6 deletions

View File

@ -52,9 +52,7 @@ class Conjunction(Module):
class Machine: class Machine:
def __init__(self): def __init__(self):
self.queue = deque() self.queue = deque()
self.send_signals = { self.send_signals = {True: 0, False: 0}
True: 0, False: 0
}
self.modules = {} self.modules = {}
def add_module(self, module: Module): def add_module(self, module: Module):
@ -75,7 +73,7 @@ class Machine:
self.queue.append((sender, destination, signal)) self.queue.append((sender, destination, signal))
def push_button(self, monitor: str = None): def push_button(self, monitor: str = None):
self.send('button', 'broadcaster', False) self.send("button", "broadcaster", False)
monitor_highs = [] monitor_highs = []
while self.queue: while self.queue:
sender, destination, signal = self.queue.popleft() sender, destination, signal = self.queue.popleft()
@ -95,11 +93,13 @@ class Day(AOCDay):
[ [
(32000000, "input20_test"), (32000000, "input20_test"),
(11687500, "input20_test2"), (11687500, "input20_test2"),
(856482136, "input20_dennis"),
(1020211150, "input20"), (1020211150, "input20"),
], ],
[ [
(224046542165867, "input20_dennis"),
(238815727638557, "input20"), (238815727638557, "input20"),
] ],
] ]
def parse_input(self) -> Machine: def parse_input(self) -> Machine:
@ -146,6 +146,6 @@ class Day(AOCDay):
return math.lcm(*list(input_highs.values())) return math.lcm(*list(input_highs.values()))
if __name__ == '__main__': if __name__ == "__main__":
day = Day(2023, 20) day = Day(2023, 20)
day.run(verbose=True) day.run(verbose=True)

58
inputs/input20_dennis Normal file
View File

@ -0,0 +1,58 @@
%cv -> xz
%kt -> qx, rz
%cb -> kt
%pl -> sf, db
%zd -> ln, gf
%bf -> qx, pf
%xz -> jd
%xm -> db
%vz -> cr, vc
%qq -> qm, gf
&xn -> th
%nn -> ff, db
%gx -> cd
&qn -> th
%qk -> vc
&xf -> th
%qj -> xm, db
%fn -> pr, gf
%sf -> bp
%jd -> qx, vm
%mc -> ds, db
%tj -> lc, gf
%jz -> qj, db
%sb -> ks, vc
%ln -> gf, qq
%bx -> qx, qp
broadcaster -> sr, ch, hd, bx
%ch -> db, mc
%ds -> cc
&qx -> cb, cv, bx, xz, vm, zl
%bp -> db, jz
&zl -> th
%vl -> gf, fj
&db -> ff, ds, sf, ch, cc, xf
&th -> rx
%cr -> gx, vc
%sr -> gf, vl
%lr -> sb
%hv -> lr
%cl -> qx, bf
%lc -> gf, fn
%pm -> vc, qk
%cc -> nn
%gm -> tj, gf
%vm -> cl
%ff -> pl
%qp -> cb, qx
%pf -> qx
&vc -> lr, hd, ks, qn, gx, nh, hv
%qm -> gm
%nh -> hv
%rz -> qx, cv
%ks -> vz
%fj -> zd
&gf -> fj, qm, xn, sr
%pr -> gf
%cd -> pm, vc
%hd -> vc, nh