import argparse from collections import Counter from typing import List parser = argparse.ArgumentParser() parser.add_argument("ifile", type=argparse.FileType('r')) args = parser.parse_args() lines = [line.strip() for line in args.ifile.readlines()] counters: List[Counter] = [Counter() for i in range(0, len(lines[0]))] for line in lines: for index, char in enumerate(line): counters[index].update([char]) gamma_string = "" epsilon_string = "" for counter in counters: if counter['1'] > counter['0']: gamma_string += '1' epsilon_string += '0' else: gamma_string += '0' epsilon_string += '1' gamma_rate = int(gamma_string, 2) epsilon_rate = int(epsilon_string, 2) print(f"gamma * epsilon = x, {gamma_rate} * {epsilon_rate} = {gamma_rate * epsilon_rate}")