예제 #1
0
def translator(puzzle_input):
    '''Reads through puzzle input and translates into Register actions'''

    r = Register(0, 'abcdefgh')

    # set up tracking variables
    counter = 0
    mul = 0

    # iterate through instructions
    while counter < len(puzzle_input):
        # split instructions
        temp = puzzle_input[counter].split(' ')

        # convert sting digits to integers
        i_list = [x if x.isalpha() else int(x) for x in temp]

        # translate instructions
        if i_list[0] == 'set':
            r.set(i_list[1], i_list[2])
        elif i_list[0] == 'sub':
            r.sub(i_list[1], i_list[2])
        elif i_list[0] == 'mul':
            r.mul(i_list[1], i_list[2])
            mul += 1
        elif i_list[0] == 'jnz':
            if r.get_value(i_list[1]) != 0:
                counter += r.get_value(i_list[2]) - 1
        counter += 1

    print("Part 1:         %d" % mul)

    # perform caluclations for part 2
    h = 0
    for i in range(105700, 122700 + 1, 17):
        if is_prime(i):
            h += 1

    print("Part 2:         %d" % h)