示例#1
0
                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")
示例#2
0
    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")
示例#3
0
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")