コード例 #1
0
ファイル: app.py プロジェクト: baileyp/advent-of-code-2018
def run():
    # Defaults
    argv.pop(0)
    defaults = {'day': '1', 'part': '1', 'input': '__default__'}
    cli_args = dict(zip(defaults.keys(), argv))
    args = ChainMap(cli_args, defaults)
    day, part, puzzle_input = args.values()
    input_is_file = True

    # Handle puzzle input
    if '__default__' == puzzle_input:
        puzzle_input = Path(f'./resources/day{day.zfill(2)}.txt')
    else:
        input_is_file = Path(puzzle_input).is_file()

    try:
        solution = import_module(f"aoc.solution.day{day.zfill(2)}")
        puzzle_part = getattr(solution, f"part{part}")

        if input_is_file:
            with open(puzzle_input, 'r') as file:
                print(puzzle_part(FileReader(file)))
        else:
            print(puzzle_part(FileReader(StringIO(puzzle_input))))
        exit(0)
    except FileNotFoundError:
        print(f"Input file {puzzle_input} not found.")
    except AttributeError:
        print(f"Part {part} not found.")
        exit(1)
    except ModuleNotFoundError:
        print(f"Day {day} not found.")
        exit(1)
コード例 #2
0
    def test_iter_circular(self, lines, break_after, expected):
        reader = FileReader(lines)
        seen = list([])
        counter = 0

        for line in reader.iter_circular():
            if counter == break_after:
                break
            seen.append(line)
            counter += 1

        assert seen.count(lines[0]) == expected
コード例 #3
0
def test_part_1(test_case, result):
    file = StringIO(test_case)
    assert day05.part1(FileReader(file)) == result
コード例 #4
0
def test_part_2(test_case, result):
    file = StringIO(test_case)
    assert day10.part2(FileReader(file)) == result
コード例 #5
0
def test_part_2(test_case, result):
    file = StringIO(test_case.replace('; ', "\n"))
    assert day06.part2(FileReader(file), 32) == result
コード例 #6
0
def test_part_1(test_case, result):
    file = StringIO(test_case.replace(', ', "\n"))
    assert day03.part1(FileReader(file)) == result
コード例 #7
0
def test_part_1(test_case, result):
    file = StringIO(test_case)
    assert day10.part1(FileReader(file), False, 3) == result
コード例 #8
0
 def test_iteration(self):
     reader = FileReader(['No Whitespace', '\tWith Whitespace   '])
     assert list(reader) == ['No Whitespace', 'With Whitespace']
コード例 #9
0
 def test_single_line(self):
     reader = FileReader(['\tSingle Line   '])
     assert reader.single_line() == 'Single Line'