s += xmas_encrypted_data[j]
            if s == first_invalid_number:
                return min(acc) + max(acc)


def find_first_invalid_number(xmas_encrypted_data: List[int]) -> int:
    for n in range(25, len(xmas_encrypted_data)):
        number_to_test: int = xmas_encrypted_data[n]
        if not any((sum(comb) == number_to_test
                    for comb in combinations(xmas_encrypted_data[n - 25:n], 2)
                    if comb[0] != comb[1])):
            return number_to_test


if __name__ == '__main__':
    input_file_path: str = os.path.join(INPUTS_FOLDER, 'day_09', 'input.txt')
    input_list: List[int] = read_lines(input_file_path=input_file_path,
                                       line_type=int)

    # Part 1
    part_1_result: int = hack(input_list,
                              hacking_method=find_first_invalid_number)
    assert part_1_result == 1492208709
    print('Part 1 result :', part_1_result)

    # Part 2
    part_2_result: int = hack(input_list,
                              hacking_method=find_encryption_weakness)
    assert part_2_result == 238243506
    print('Part 2 result :', part_2_result)
Esempio n. 2
0
                x -= 1
                i += 1
        elif instruction == 'n':
            y += 1
            i += 1
            instruction = tile_path[i]
            if instruction == 'e':
                x += 1
                i += 1
            elif instruction == 'w':
                i += 1
    return x, y


if __name__ == '__main__':
    input_file_path: str = os.path.join(INPUTS_FOLDER, 'day_24', 'input.txt')
    input_list: List[str] = read_lines(input_file_path=input_file_path,
                                       line_type=str)

    # Part 1
    part_1_result: int = count_black_tiles_after_floor_is_installed(
        tiles_to_flip=input_list)
    assert part_1_result == 282
    print('Part 1 result :', part_1_result)

    # Part 2
    part_2_result: int = count_black_tiles_after_animations(
        tiles_to_flip=input_list, days=100)
    assert part_2_result == 3445
    print('Part 2 result :', part_2_result)