Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

39 lines
951B

  1. import sys
  2. from itertools import chain, cycle, permutations
  3. from intcode import compute
  4. ns = sys.stdin.read()
  5. def solve(ns, phases):
  6. out = 0
  7. for n in phases:
  8. out = list(compute(ns, iter([n, out])))[-1]
  9. return out
  10. print(max(solve(ns, phases) for phases in permutations(range(5))))
  11. def solve2(ns, phases):
  12. feedback = []
  13. iter_phases = iter(phases)
  14. iter_feed = iter(feedback)
  15. loop = cycle([
  16. compute(ns, chain([next(iter_phases), 0], iter_feed)),
  17. compute(ns, chain([next(iter_phases)], iter_feed)),
  18. compute(ns, chain([next(iter_phases)], iter_feed)),
  19. compute(ns, chain([next(iter_phases)], iter_feed)),
  20. compute(ns, chain([next(iter_phases)], iter_feed)),
  21. ])
  22. try:
  23. for machine in loop:
  24. feedback.append(next(machine))
  25. except StopIteration:
  26. return feedback[-1]
  27. print(max(solve2(ns, phases) for phases in permutations(range(5, 10))))