part1.py 814 B

12345678910111213141516171819202122232425262728293031
  1. import argparse
  2. from collections import Counter
  3. from typing import List
  4. parser = argparse.ArgumentParser()
  5. parser.add_argument("ifile", type=argparse.FileType('r'))
  6. args = parser.parse_args()
  7. lines = [line.strip() for line in args.ifile.readlines()]
  8. counters: List[Counter] = [Counter() for i in range(0, len(lines[0]))]
  9. for line in lines:
  10. for index, char in enumerate(line):
  11. counters[index].update([char])
  12. gamma_string = ""
  13. epsilon_string = ""
  14. for counter in counters:
  15. if counter['1'] > counter['0']:
  16. gamma_string += '1'
  17. epsilon_string += '0'
  18. else:
  19. gamma_string += '0'
  20. epsilon_string += '1'
  21. gamma_rate = int(gamma_string, 2)
  22. epsilon_rate = int(epsilon_string, 2)
  23. print(f"gamma * epsilon = x, {gamma_rate} * {epsilon_rate} = {gamma_rate * epsilon_rate}")