07_amplifiers.py 714 B

12345678910111213141516171819202122232425
  1. #!/usr/bin/env python3
  2. import sys
  3. from itertools import permutations
  4. from intcode import read_program, run
  5. def amplify(p, phases):
  6. amps = []
  7. signal = 0
  8. for phase in phases:
  9. amp = run(p)
  10. assert next(amp) is None
  11. assert amp.send(phase) is None
  12. signal = amp.send(signal)
  13. amps.append(amp)
  14. try:
  15. while True:
  16. for amp in amps:
  17. assert next(amp) is None
  18. signal = amp.send(signal)
  19. except StopIteration:
  20. return signal
  21. program = read_program(sys.stdin)
  22. print(max(amplify(program, phases) for phases in permutations(range(5))))
  23. print(max(amplify(program, phases) for phases in permutations(range(5, 10))))