Esempio n. 1
0
def part_two(filename: str):

    lines = data.load_lines(filename)

    for i in range(len(lines)):

        copy = lines.copy()

        if copy[i].startswith("jmp"):
            copy[i] = copy[i].replace("jmp", "nop")
        elif copy[i].startswith("nop"):
            copy[i] = copy[i].replace("nop", "jmp")

        index, accumulator = 0, 0
        seen = []

        while True:

            if index == len(lines):
                print(accumulator)
                return accumulator

            elif index in seen:
                break

            else:
                seen.append(index)
                index, accumulator = process_instruction(
                    copy[index], index, accumulator)
Esempio n. 2
0
def test_aoc_03_part_two():

    # GIVEN input data
    input_data = data.load_lines("data/day03.txt")

    # WHEN calling part_one()
    result = aoc_03.part_two(input_data)

    # THEN result is correct
    assert result == 3584591857
Esempio n. 3
0
def test_aoc_01_part_one():

    # GIVEN input data
    input_data = data.load_lines("data/day01.txt")

    # WHEN calling part_one()
    result = aoc_01.part_one(input_data)

    # THEN result is correct
    assert result == 989824
Esempio n. 4
0
def test_aoc_05_part_two():

    # GIVEN input data
    input_data = data.load_lines("data/day05.txt")

    # WHEN calling part_two()
    result = aoc_05.part_two(input_data)

    # THEN result is correct
    assert result == 617
Esempio n. 5
0
    taken_seats = list(map(lambda x: get_seat(x), input_data))
    taken_seats.sort()

    possible_seats = list(map(lambda x: f"{x:02o}", range(128 * 8)))
    possible_seats = list(
        map(lambda x: (int(x[:-1]), int(x[-1])), possible_seats))
    while possible_seats[0] < taken_seats[0]:
        possible_seats.pop(0)
    while possible_seats[-1] > taken_seats[-1]:
        possible_seats.pop(-1)

    result = None
    possible_results = list(
        filter(lambda x: x not in taken_seats, possible_seats))
    assert len(possible_results) == 1
    row, col = possible_results[0]
    result = row * 8 + col
    print(result)
    return result


if __name__ == "__main__":

    input_data = data.load_lines("data/day05.txt")

    print("==== Part 1 ====")
    part_one(input_data)

    print("==== Part 2 ====")
    part_two(input_data)
Esempio n. 6
0
def load(lines):
  return data.load_lines(lines, Glyphs)
Esempio n. 7
0
def prep_data(filename: str):
    lines = data.load_lines(filename)
    lines = list(map(lambda x: int(x), lines))
    return lines
Esempio n. 8
0
def create_rule_dict(filename: str):
    lines = data.load_lines(filename)
    rules = {}
    for line in lines:
        rules.update(process_rule(line))
    return rules
Esempio n. 9
0
def part_one(filename: str):
    lines = data.load_lines(filename)
    index, accumulator = process_lines(lines)
    print(accumulator)
    return accumulator