Example #1
0
def run_part_1(in_file: str, preamble=25, debug: bool = False) -> int:
    pretty.printHeader(DAY, 1, inspect.stack()[0].function, in_file)
    result = 0
    numbers = loadingUtils.importToIntArray(in_file)
    result = find_wrong_number(numbers, preamble, debug)
    print("Result = {}".format(result))
    return result
Example #2
0
def run_part_2(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 2, inspect.stack()[0].function, in_file)
    result = 0
    seats = loadingUtils.importTo2DArray(in_file)
    result = run_until_stable2(seats)
    print("Result = {}".format(result))
    return result
Example #3
0
def run_part_2(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 2, inspect.stack()[0].function, in_file)
    result = 0
    paths = parse(loadingUtils.importToArray(in_file))
    tiles = defaultdict(Tile)
    for path in paths:
        idx = walk_path(path, False)
        if debug:
            print("gonna flip Tile {}: from {}".format(idx, tiles[idx]),
                  end="")
        tiles[idx].flip()
        if debug: print(" to {}".format(tiles[idx]))
    print_floor(tiles)
    print(count_black(tiles))
    #tiles = step(tiles)
    #print_floor(tiles)
    #print(count_black(tiles))
    for i in range(1, 101):
        #for i in range(1, 5):
        tiles = step(tiles)
        #print_floor(tiles)
        print("Step {:3}: {}".format(i, count_black(tiles)))

    result = count_black(tiles)
    # code here
    print("Result = {}".format(result))
    return result
Example #4
0
def run_part_2(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 2, inspect.stack()[0].function, in_file)
    result = 0
    in_text = loadingUtils.importToArray(in_file)
    tile_id = 0
    tile_content = []
    tile_counter = 0
    tiles = []
    for line in in_text:
        if line == "":
            tiles.append(Tile(tile_id, tile_content))
            tile_id = 0
            tile_content = []
            continue
        if "Tile" in line:
            tile_id = int(line.split(" ")[1][:-1])
            tile_counter += 1
        else:
            tile_content.append(list(line))
    tiles.append(Tile(tile_id, tile_content))
    print("We have {} Tiles".format(tile_counter))
    print(len(tiles))
    assert len(tiles) == tile_counter
    for tile in tiles:
        print()
        tile.print()
        print(tile.edges)
    find_edges(tiles)
    print("Start Assembling Image")
    image = assemble_image(tiles)
    # now remove all monsters
    result = remove_monsters(image)
    # code here
    print("Result = {}".format(result))
    return result
Example #5
0
def run_part_1(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 1, inspect.stack()[0].function, in_file)
    in_text = loadingUtils.importToArray(in_file)
    tile_id = 0
    tile_content = []
    tile_counter = 0
    tiles = []
    for line in in_text:
        if line == "":
            tiles.append(Tile(tile_id, tile_content))
            tile_id = 0
            tile_content = []
            continue
        if "Tile" in line:
            tile_id = int(line.split(" ")[1][:-1])
            tile_counter += 1
        else:
            tile_content.append(list(line))
    tiles.append(Tile(tile_id, tile_content))
    print("We have {} Tiles".format(tile_counter))
    print(len(tiles))
    assert len(tiles) == tile_counter
    for tile in tiles:
        print()
        tile.print()
        print(tile.edges)
    find_edges(tiles)
    result = 1
    for tile in tiles:
        if tile.is_edge:
            result = result * tile.id
    # code here
    print("Result = {}".format(result))
    return result
Example #6
0
def run_part_2(in_file, debug: bool = False) -> int:
    pretty.printHeader(DAY, 2, inspect.stack()[0].function, in_file)
    #result = get_number(in_file, 2020)
    result = get_number(in_file, 30000000)
    # code here
    print("Result = {}".format(result))
    return result
Example #7
0
def run_part_2(in_file: str, _weakness, debug: bool = False) -> int:
    pretty.printHeader(DAY, 2, inspect.stack()[0].function, in_file)
    result = 0
    numbers = loadingUtils.importToIntArray(in_file)
    result = find_weaknes(numbers, _weakness)
    print("Result = {}".format(result))
    return result
Example #8
0
def run_part_1(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 1, inspect.stack()[0].function, in_file)
    result = 0
    treemap = loadingUtils.importTo2DArray(in_file)
    if debug: pretty.print2DMap(treemap)
    path = get_path_traverse_diagonal(treemap, (1, 3))
    result = len(list(filter(lambda x: x == "#", path)))
    print("I hit {} trees!".format(result))
    return result
Example #9
0
def run_part_1(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 1, inspect.stack()[0].function, in_file)
    result = 0
    notes = loadingUtils.importToArray(in_file)
    rules, my_ticket, nearby = parser(notes)
    result = sum_wrong(rules, nearby)
    # code here
    print("Result = {}".format(result))
    return result
Example #10
0
def run_part_2(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 2, inspect.stack()[0].function, in_file)
    result = 0
    cups = list(map(int, list(loadingUtils.importToArray(in_file)[0])))
    print(cups)
    result = run_b(cups)
    # code here
    print("Result = {}".format(result))
    return result
Example #11
0
def run_part_2(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 2, inspect.stack()[0].function, in_file)
    result = 0
    start_map = loadingUtils.importTo2DArray(in_file)
    final_map = run2(start_map, 6)
    result = count_map(final_map)
    # code here
    print("Result = {}".format(result))
    return result
Example #12
0
def run_part_2(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 2, inspect.stack()[0].function, in_file)
    result = 0
    nav_instr = loadingUtils.importToArray(in_file)
    print(nav_instr)
    goal = get_end_point_real(nav_instr)
    print("Endpoint {}".format(goal))
    result = abs(goal[0]) + abs(goal[1])
    print("Result = {}".format(result))
    return result
Example #13
0
def run_part_1(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 1, inspect.stack()[0].function, in_file)
    result = 0
    eqns = loadingUtils.importToArray(in_file)
    for eqn in eqns:
        res = evaluate(eqn)
        print(res)
        result += res
    print("Result = {}".format(result))
    return result
Example #14
0
def run_part_1(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 1, inspect.stack()[0].function, in_file)
    result = 0
    adapters = loadingUtils.importToIntArray(in_file)
    adapters.sort()
    print(adapters)
    result = validate_chain(adapters)
    # code here
    print("Result = {}".format(result))
    return result
Example #15
0
def run_part_1(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 1, inspect.stack()[0].function, in_file)
    result = 0
    answer_groups = loadingUtils.import_multiline(in_file,
                                                  separator="empty Line",
                                                  joinString=False)
    for answers in answer_groups:
        answers = set(itertools.chain.from_iterable(map(list, answers)))
        result += len(answers)
    print("Result = {}".format(result))
    return result
Example #16
0
def run_part_1(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 1, inspect.stack()[0].function, in_file)
    result = 0
    boardingpasses = loadingUtils.importToArray(in_file)
    seatIDs = []
    for boardingpass in boardingpasses:
        (row_i, col_i, seatID) = calc_row_column(boardingpass)
        seatIDs.append(seatID)
    result = max(seatIDs)
    print("Result = {}".format(result))
    return result
Example #17
0
def run_part_2(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 2, inspect.stack()[0].function, in_file)
    result = 0
    prog_array = loadingUtils.importToArray(in_file)
    handheld = cp.Computer()
    handheld.hard_reset()
    handheld.debug = debug
    handheld.load_program(prog_array)
    result = handheld.run_day08_2()
    print("Result = {}".format(result))
    return result
Example #18
0
def run_part_1(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 1, inspect.stack()[0].function, in_file)
    result = 0
    _starttime, _busses = loadingUtils.importToArray(in_file)
    starttime = int(_starttime)
    print(starttime)
    busses = get_valid_busses(_busses)
    print(busses)
    result = next_to_airport(starttime, busses)
    # code here
    print("Result = {}".format(result))
    return result
Example #19
0
def run_part_2(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 2, inspect.stack()[0].function, in_file)
    result = 0
    p1, p2 = parse(loadingUtils.importToArray(in_file))
    _, winner = play_advanced(p1, p2, debug)
    print(winner)
    winner.reverse()
    for i, v in enumerate(winner):
        result += (i + 1) * v
    # code here
    print("Result = {}".format(result))
    return result
Example #20
0
def run_part_2(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 2, inspect.stack()[0].function, in_file)
    result = 0
    answer_groups = loadingUtils.import_multiline(in_file,
                                                  separator="empty Line",
                                                  joinString=False)
    for answers in answer_groups:
        answers = list(map(set, answers))
        intersections = set.intersection(*answers)
        result += len(intersections)
    print("Result = {}".format(result))
    return result
Example #21
0
def run_part_2(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 2, inspect.stack()[0].function, in_file)
    result = 0
    passwords_list = loadingUtils.importToArray(in_file)
    results = []
    for password_line in passwords_list:
        (password, min_number, max_number, test_char) = parse_input(password_line)
        if validate_password_rules2(password, min_number, max_number, test_char):
            results.append(password)
    result = len(results)
    print("We have found {} valid passwords.".format(result))
    return result
Example #22
0
def run_part_2_no_cache(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 2, inspect.stack()[0].function, in_file)
    result = 0
    _adapters = loadingUtils.importToIntArray(in_file)
    _adapters.append(0)
    _adapters.sort()
    adapters = tuple(_adapters)
    print(adapters)
    result = get_number_of_chains_no_cache(adapters)
    # code here
    print("Result = {}".format(result))
    return result
Example #23
0
def run_part_1(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 1, inspect.stack()[0].function, in_file)
    result = 0
    lines = loadingUtils.importToArray(in_file)
    rules, messages = split(lines)
    #print(rules)
    regexp = generate_regex(rules)
    print(regexp)
    #print(messages)
    result = count_matches(regexp, messages, debug)
    # code here
    print("Result = {}".format(result))
    return result
Example #24
0
def run_part_1(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 1, inspect.stack()[0].function, in_file)
    foodlist = loadingUtils.importToArray(in_file)
    list_ingredients, allergens, mapping = parse_input(foodlist)
    # all values of the values of the dict
    exclude = set(v for vs in mapping.values() for v in vs)
    print(exclude)
    result = 0
    for ingredients in list_ingredients:
        for ingredient in ingredients:
            result += ingredient not in exclude
    print("Result = {}".format(result))
    return result
Example #25
0
def run_part_2(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 2, inspect.stack()[0].function, in_file)
    result = 0
    foodlist = loadingUtils.importToArray(in_file)
    list_ingredients, allergens, mapping = parse_input(foodlist)
    solution = solve(mapping)
    print(solution)
    solution.sort()
    print(solution)
    result = ",".join([x[1] for x in solution])
    # code here
    print("Result = {}".format(result))
    return result
Example #26
0
def run_part_2(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 2, inspect.stack()[0].function, in_file)
    result = 0
    notes = loadingUtils.importToArray(in_file)
    rules, my_ticket, nearby = parser(notes)
    #print_rules(rules)
    clean_nearby = cleanup(rules, nearby)
    print("before cleanup = {}; after cleanup {}".format(len(nearby), len(clean_nearby)))
    match_columns(rules, clean_nearby)
    # code here
    result = 97*163*101*73*53*131
    print("Result = {}".format(result))
    return result
Example #27
0
def run_part_1(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 1, inspect.stack()[0].function, in_file)
    result = 0
    passports = loadingUtils.import_multiline(in_file)
    if debug: pretty.print2DMap(passports)
    count = 0
    for passport in passports:
        if complete_passport(passport):
            count += 1

    # code here
    result = count
    print("Result = {}".format(result))
    return result
Example #28
0
def run_part_2(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 2, inspect.stack()[0].function, in_file)
    result = 0
    eqns = loadingUtils.importToArray(in_file)
    for eqn in eqns:
        print(eqn)
        new_eqn = transform(eqn)
        print(new_eqn)
        res = evaluate(new_eqn)
        print(res)
        result += res
    # code here
    print("Result = {}".format(result))
    return result
Example #29
0
def run_part_2(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 2, inspect.stack()[0].function, in_file)
    result = 0
    treemap = loadingUtils.importTo2DArray(in_file)
    if debug: pretty.print2DMap(treemap)
    list_of_directions = [(1, 1), (1, 3), (1, 5), (1, 7), (2, 1)]
    number_of_trees_per_run = []
    for direction in list_of_directions:
        number_of_trees_per_run.append(
            len(
                list(
                    filter(lambda x: x == "#",
                           get_path_traverse_diagonal(treemap, direction)))))
    print(number_of_trees_per_run)
    result = functools.reduce(lambda x, y: x * y, number_of_trees_per_run)
    print("Result = {}".format(result))
    return result
Example #30
0
def run_part_1(in_file: str, debug: bool = False) -> int:
    pretty.printHeader(DAY, 1, inspect.stack()[0].function, in_file)
    result = 0
    paths = parse(loadingUtils.importToArray(in_file))
    tiles = defaultdict(Tile)
    for path in paths:
        idx = walk_path(path, debug)
        if debug:
            print("gonna flip Tile {}: from {}".format(idx, tiles[idx]),
                  end="")
        tiles[idx].flip()
        if debug: print(" to {}".format(tiles[idx]))
    print(tiles)
    result = Counter([x.print() for x in tiles.values()])['BLACK']
    print()
    # code here
    print("Result = {}".format(result))
    return result