opcode[opcode[i + 3]] = opcode[opcode[i + 1]] + opcode[opcode[i + 2]] # addition opcode, c = a * b elif opcode[i] == 2: opcode[opcode[i + 3]] = opcode[opcode[i + 1]] * opcode[opcode[i + 2]] return opcode[0] # iterate through each opcode for opcode in opcodes: max_val = len(opcode) - 1 # Check all combinations of nouns and verbs from 0 - 99 for noun in range(100): for verb in range(100): # check for overflow if noun > max_val or verb > max_val: continue # compute the opcode with the current combination of noun, verb address_0 = comput_opcode(opcode.copy(), noun, verb) if (address_0 == 19690720): print("Noun: %d, Verb: %d" % (noun, verb)) print("What is 100 * noun + verb = %d" % (100 * noun + verb)) if __name__ == '__main__': arguments(part_1, part_2) print("\n")
return common def part2(path): inputs = read_file(path or PATH, return_type=str, strip=True) oxygen = inputs co2 = inputs for i in range(len(inputs[0])): if (len(oxygen) > 1): oxygen_mcb = mcb(oxygen, i) if oxygen_mcb['0'] > oxygen_mcb['1']: oxygen = trim(oxygen, i, '0') else: oxygen = trim(oxygen, i, '1') if (len(co2) > 1): co2_mcb = mcb(co2, i) if co2_mcb['0'] > co2_mcb['1']: co2 = trim(co2, i, '1') else: co2 = trim(co2, i, '0') oxygen_dec = int(oxygen[0], 2) co2_dec = int(co2[0], 2) print(oxygen_dec * co2_dec) if __name__ == "__main__": arguments(part1, part2) print("\n")
def part2(path): file_data = read_file(path or PATH, return_type=str, strip=True) grid = [] for point in file_data: if point == "": break x, y = point.split(",") grid = add_point(int(x), int(y), grid) folds = [] f = False for fold in file_data: if f: folds.append(fold.split(' ')[2]) if fold == "": f = True for fold in folds: [dir, line] = fold.split('=') if (dir == "y"): grid = fold_y(grid, int(line)) if (dir == "x"): grid = fold_x(grid, int(line)) display_grid(grid) if __name__ == "__main__": print(arguments(part1, part2)) print("\n")