Advent of Code 2016 solutions https://adventofcode.com/2016/
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

1234567891011121314151617181920212223
  1. #!/usr/bin/python3
  2. import collections
  3. with open('data/10.txt', 'r') as file:
  4. targets = collections.defaultdict(lambda: {'inputs': [], 'low': -1, 'high': -1})
  5. lines = list(map(str.split, map(str.strip, file.readlines())))
  6. for instr in lines:
  7. if instr[0] == 'value':
  8. targets[' '.join(instr[4:6])]['inputs'].append(int(instr[1]))
  9. else:
  10. targets[' '.join(instr[0:2])]['low'] = ' '.join(instr[5:7])
  11. targets[' '.join(instr[0:2])]['high'] = ' '.join(instr[10:12])
  12. pending = set(targets.keys())
  13. while len(pending):
  14. for k, bot in [(k, targets[k]) for k in pending if len(targets[k]['inputs']) == 2]:
  15. targets[bot['low']]['inputs'].append(min(bot['inputs']))
  16. targets[bot['high']]['inputs'].append(max(bot['inputs']))
  17. pending.remove(k)
  18. print("Part 1: %s" % [k for k,v in targets.items() if 61 in v['inputs'] and 17 in v['inputs']][0])
  19. print("Part 2: %i" % (targets['output 0']['inputs'][0] * targets['output 1']['inputs'][0] * targets['output 2']['inputs'][0]))