コード例 #1
0
def main():
    input_lines = utils.get_input_lines(INPUT_FILE)

    count = 0
    triangles = []

    one = []
    two = []
    three = []

    for index, line in enumerate(input_lines):
        sides = [int(x) for x in line.split()]

        one.append(sides[0])
        two.append(sides[1])
        three.append(sides[2])

        if len(one) == 3:
            triangles.append(one.copy())
            triangles.append(two.copy())
            triangles.append(three.copy())

            one = []
            two = []
            three = []

    for triangle in triangles:
        valid = False
        if valid_triangle(triangle):
            count += 1
            valid = True

        print("{}: {} - valid:{}".format(index, triangle, valid))

    print("Total invalid: {}".format(count))
コード例 #2
0
ファイル: p2.py プロジェクト: joneubank/adventofcode
def main():
    input_lines = utils.get_input_lines(INPUT_FILE)

    for index, line in enumerate(input_lines):

        print("{}: {}".format(index, line))

    valid_sectors_sum = sum(valid_checksums)
コード例 #3
0
ファイル: p1.py プロジェクト: joneubank/adventofcode
def main():
    input_lines = utils.get_input_lines(INPUT_FILE)


    for index, line in enumerate(input_lines):

        print("{}: {}".format(index, line))

    valid_sectors_sum = sum(valid_checksums)
コード例 #4
0
ファイル: p2.py プロジェクト: joneubank/adventofcode
def main():
    input_lines = utils.get_input_lines(INPUT_FILE)

    for index, line in enumerate(input_lines):
        is_valid = False
        room_name, sector_id, checksum = split_room_string(line)
        if is_real_room(room_name, checksum):
            is_valid = True

            readable_name = decrypt_name(room_name, sector_id)

            print("{}: {}".format(sector_id, readable_name))
コード例 #5
0
ファイル: p2.py プロジェクト: joneubank/adventofcode
def main():
    input_lines = utils.get_input_lines(INPUT_FILE)

    for index, line in enumerate(input_lines):
        is_valid = False
        room_name, sector_id, checksum = split_room_string(line)
        if is_real_room(room_name, checksum):
            is_valid = True

            readable_name = decrypt_name(room_name, sector_id)

            print("{}: {}".format(sector_id, readable_name))
コード例 #6
0
ファイル: p1.py プロジェクト: joneubank/adventofcode
def main():
    input_lines = utils.get_input_lines(INPUT_FILE)

    count = 0

    for index, line in enumerate(input_lines):
        valid = False
        sides = [int(x) for x in line.split()]

        if valid_triangle(sides):
            count += 1
            valid = True

        print("{}: {} - valid:{}".format(index, line, valid))

    print("Total invalid: {}".format(count))
コード例 #7
0
def main():
    input_lines = utils.get_input_lines(INPUT_FILE)

    valid_checksums = []

    for index, line in enumerate(input_lines):
        is_valid = False
        room_name, sector_id, checksum = split_room_string(line)
        if is_real_room(room_name, checksum):
            is_valid = True
            valid_checksums.append(sector_id)

        print("{}: {} - is valid: {}".format(index, line, is_valid))

    valid_sectors_sum = sum(valid_checksums)

    print("Sum of Real Room Sector IDs: {}".format(valid_sectors_sum))
コード例 #8
0
ファイル: p1.py プロジェクト: joneubank/adventofcode
def main():
    input_lines = utils.get_input_lines(INPUT_FILE)

    bathroom_code = ""
    pos = [1,1]

    for index, line in enumerate(input_lines):
        print("{index} - Last Number: {last_num} - instructions: {line}".format(index=index, last_num=keypad[pos[0]][pos[1]], line=line))

        for letter in line:
            direction = directions.get(letter, [0,0])
            next_pos = [pos[0]+direction[0], pos[1]+direction[1]]
            if all([next_pos[0] >= 0, next_pos[0] <= 2, next_pos[1] >= 0, next_pos[1] <= 2]):
                pos = next_pos
            # print("    {} - {}".format(letter, keypad[pos[0]][pos[1]]))

        bathroom_code += "{}".format(keypad[pos[0]][pos[1]])

    print("Bathroom Code is: {}".format(bathroom_code))
コード例 #9
0
def main():
    input_lines = utils.get_input_lines(INPUT_FILE)

    instructions = input_lines[0].split(', ')

    # Starting situation
    pos = [0,0]
    direction_index = 0

    for index, step in enumerate(instructions):
        print("{index}: @{pos} facing {dir}. Next going {step}".format(index=index, pos=pos, dir=direction_names[direction_index], step=step))
        turn_direction = step[0]
        distance = int(step[1:])
        direction_index = next_direction_index(direction_index,turn_direction)

        pos[0] += direction_mods[direction_index][0]*distance
        pos[1] += direction_mods[direction_index][1]*distance

    print("Final Position: {}".format(pos))

    final_distance = abs(pos[0])+abs(pos[1])
    print("Final Distance: {}".format(final_distance))
コード例 #10
0
def main():
    input_lines = utils.get_input_lines(INPUT_FILE)

    bathroom_code = ""
    pos = [0,2]

    for index, line in enumerate(input_lines):
        print("{index} - Last Number: {last_num} - instructions: {line}".format(index=index, last_num=keypad[pos[1]][pos[0]], line=line))

        for letter in line:
            direction = directions.get(letter, [0,0])
            next_pos = [pos[0]+direction[0], pos[1]+direction[1]]
            if all( [
                next_pos[0] >= 0,
                next_pos[0] <= 4,
                next_pos[1] >= 0,
                next_pos[1] <= 4
                ]) and keypad[next_pos[1]][next_pos[0]]:
                pos = next_pos

        bathroom_code += "{}".format(keypad[pos[1]][pos[0]])

    print("Bathroom Code is: {}".format(bathroom_code))
コード例 #11
0
ファイル: p2.py プロジェクト: joneubank/adventofcode
def main():
    input_lines = utils.get_input_lines(INPUT_FILE)

    instructions = input_lines[0].split(', ')

    # Starting situation
    pos = [0,0]
    direction_index = 0
    visited_locations = []
    final_pos = None
    
    for index, step in enumerate(instructions):
        print("{index}: @{pos} facing {dir}. Next going {step}. Places Visited: {visited}".format(index=index, pos=pos, dir=direction_names[direction_index], step=step, visited=visited_locations))
        turn_direction = step[0]
        distance = int(step[1:])
        direction_index = next_direction_index(direction_index,turn_direction)

        for x in range(distance):
            pos[0] += direction_mods[direction_index][0]
            pos[1] += direction_mods[direction_index][1]

            if pos in visited_locations:
                print("Returned to a visited position: {}".format(pos))
                final_pos = pos
                break
            else:
                visited_locations.append(pos.copy())

        if final_pos:
            # Answer was found, break out of here too
            break

    print("Final Position: {}".format(final_pos))

    final_distance = abs(final_pos[0])+abs(final_pos[1])
    print("Final Distance: {}".format(final_distance))