Exemplo n.º 1
0
def main():
    args = parse_arguments()

    if args.test:
        run_tests()
        return

    assert args.day, "Need to specify day"

    directories = [
        name for name in os.listdir(".")
        if os.path.isdir(name) and name == "day_{:02d}".format(args.day)
    ]
    assert len(directories) == 1
    import_module("{name}.{name}".format(name=directories[0]))
    assert len(Day.__subclasses__()) == 1

    day = Day.__subclasses__()[0]()

    if args.part_1:
        print("Solution part 1:", day.part_1())

    if args.part_2:
        print("Solution part 2:", day.part_2())
Exemplo n.º 2
0
def run_tests():
    directories = [
        name for name in os.listdir(".")
        if os.path.isdir(name) and name.startswith("day_")
    ]
    for directory in directories:
        import_module("{name}.{name}".format(name=directory))
    for day_class in tqdm(
            sorted(Day.__subclasses__(), key=lambda cls: cls.__name__)):
        day = day_class()
        if day.part_1_solution is None:
            tqdm.write("Part 1 of {} is not implemented!".format(
                day_class.__name__))
        else:
            assert day.part_1() == day.part_1_solution, "Part 1 is broken"
        if day.part_2_solution is None:
            tqdm.write("Part 2 of {} is not implemented!".format(
                day_class.__name__))
        else:
            assert day.part_2() == day.part_2_solution, "Part 2 is broken"

        if day.part_1_solution is not None and day.part_2_solution is not None:
            tqdm.write("{} is ok!".format(day_class.__name__))