Browse Source

✂️

master
Roderic Day 5 years ago
parent
commit
f2f41a647d
2 changed files with 4 additions and 12 deletions
  1. +2
    -9
      y2019/p07.py
  2. +2
    -3
      y2019/p12.py

+ 2
- 9
y2019/p07.py View File





def solve2(ns, phases): def solve2(ns, phases):
feedback = []
iter_phases = iter(phases)
feedback = [0]
iter_feed = iter(feedback) iter_feed = iter(feedback)
loop = cycle([
compute(ns, chain([next(iter_phases), 0], iter_feed)),
compute(ns, chain([next(iter_phases)], iter_feed)),
compute(ns, chain([next(iter_phases)], iter_feed)),
compute(ns, chain([next(iter_phases)], iter_feed)),
compute(ns, chain([next(iter_phases)], iter_feed)),
])
loop = cycle(compute(ns, chain([phase], iter_feed)) for phase in phases)
try: try:
for machine in loop: for machine in loop:
feedback.append(next(machine)) feedback.append(next(machine))

+ 2
- 3
y2019/p12.py View File

nX, _ = simulate(text, axes=slice(0, 1)) nX, _ = simulate(text, axes=slice(0, 1))
nY, _ = simulate(text, axes=slice(1, 2)) nY, _ = simulate(text, axes=slice(1, 2))
nZ, _ = simulate(text, axes=slice(2, 3)) nZ, _ = simulate(text, axes=slice(2, 3))
gcds = {gcd(p, q) for p, q in itertools.combinations([nX, nY, nZ], 2)}
lcm = functools.reduce(int.__mul__, gcds)
print(nX * nY * nZ // lcm)
lcm = functools.reduce(lambda a, b: a * b // gcd(a, b), [nX, nY, nZ])
print(lcm)

Loading…
Cancel
Save