def solution(puzzle_input: aoc.Input): codes = np.array([[int(b) for b in line.strip()] for line in puzzle_input.lines()]) gamma_arr = codes.sum(axis=0) > (len(codes) // 2) gamma = to_int(gamma_arr) epsilon = to_int(~gamma_arr) return gamma * epsilon
def solution(puzzle_input: aoc.Input): lines = puzzle_input.lines() codes = [int(line, base=2) for line in lines] code_width = len(lines[0].strip()) msb = 1 << (code_width - 1) oxygen_generator_rating = rating(codes, msb, True) CO2_scrubber_rating = rating(codes, msb, False) return oxygen_generator_rating * CO2_scrubber_rating