Example #1
0
def get_acceptable_password_count_part1(input_file):
    acceptable_password_count = 0
    values = get_input_as_strings(input_file)
    for value in values:
        password_obj = _format_input(value)
        if _meets_password_policy_part1(password_obj):
            acceptable_password_count += 1
    return acceptable_password_count
Example #2
0
def get_acceptable_password_count_part2(input_file):
    acceptable_password_count = 0
    values = get_input_as_strings(input_file)
    for value in values:
        logging.debug(f'{value=}')
        password_obj = _format_input(value)
        if _meets_password_policy_part2(password_obj):
            acceptable_password_count += 1
    return acceptable_password_count
Example #3
0
def _parse_input(input_file):
    parsed_lines = []
    lines = get_input_as_strings(input_file)
    for line in lines:
        op, amount = line.split()
        dict_op = {'operation': op, 'amount': int(amount), 'called_count': 0}
        parsed_lines.append(dict_op)
    # print(json.dumps(parsed_lines, indent=4))
    operations = Operations(parsed_lines)
    return operations
Example #4
0
def _parse_input(input_file):
    rules = []
    lines = get_input_as_strings(input_file)
    for line in lines:
        split_string = line.split(' bags contain ')
        bag_name = split_string[0]
        contents = _parse_contents(split_string[1])
        bag = Bag(bag_name, contents)
        rules.append(bag)
    return rules
Example #5
0
def everyone_answered_yes(input_file):
    group_answers = []
    lines = get_input_as_strings(input_file)
    answers = []
    for line in lines:
        if line != '':
            answers.append(set(line))
        else:
            group_answers.append(set.intersection(*answers))
            answers.clear()

    group_answers.append(set.intersection(*answers))
    count = 0
    for a in group_answers:
        count += len(a)
    return count
Example #6
0
def _parse_passports(input_file):
    passports = []
    lines = get_input_as_strings(input_file)
    passport = ''
    for line in lines:
        if line != '':
            if passport == '':
                passport = line
            else:
                passport += ' ' + line
        else:
            passport_obj = _create_passport_obj(passport)
            passports.append(passport_obj)
            passport = ''
    passport_obj = _create_passport_obj(passport)
    passports.append(passport_obj)
    return passports
Example #7
0
def anyone_answered_yes(input_file):
    group_answers = []
    lines = get_input_as_strings(input_file)
    answers = ''
    for line in lines:
        if line != '':
            if answers == '':
                answers = line
            else:
                answers += line
        else:
            group_answers.append(set(answers))
            answers = ''

    group_answers.append(set(answers))
    count = 0
    for a in group_answers:
        count += len(a)
    return count
Example #8
0
def _get_seat_coordinates(input_file):
    lines = get_input_as_strings(input_file)
    coordinates = []
    for line in lines:
        row = line[:7]
        col = line[-3:]
        seat = PlaneSeat(string=row,
                         lower='F',
                         upper='B',
                         minimum=0,
                         maximum=128)
        row_num = math.trunc(seat.get_position())
        seat = PlaneSeat(string=col,
                         lower='L',
                         upper='R',
                         minimum=0,
                         maximum=8)
        col_num = math.trunc(seat.get_position())
        coordinates.append((row_num, col_num))
    coordinates.sort(key=lambda tup: (tup[0], tup[1]))
    return coordinates
Example #9
0
def _create_grid_with_values(input_file):
    grid = []
    lines = get_input_as_strings(input_file)
    for line in lines:
        grid.append(line)
    return grid
Example #10
0
def _parse_input(input_file):
    lines = get_input_as_strings(input_file)
    parsed_lines = []
    for line in lines:
        parsed_lines.append(line)
    return parsed_lines