#!/usr/bin/env python3 import aoclib import re DAY = 2 splitter = re.compile(r'([0-9]+)-([0-9]+) ([a-z]): (.*)') def part1(test_mode=False): my_input = aoclib.getInputLineAsArray(day=2, test=test_mode) valid_count = 0 for line in my_input: match = re.match(splitter, line) (min_count, max_count, character, password) = match.group(1, 2, 3, 4) if int(min_count) <= password.count(character) <= int(max_count): valid_count = valid_count + 1 return valid_count def part2(test_mode=False): my_input = aoclib.getInputLineAsArray(day=2, test=test_mode) valid_count = 0 for line in my_input: match = re.match(splitter, line) (min_count, max_count, character, password) = match.group(1, 2, 3, 4) if (password[int(min_count) - 1] == character or password[int(max_count) - 1] == character) \ and password[int(min_count) - 1] != password[int(max_count) - 1]: valid_count = valid_count + 1 return valid_count if __name__ == '__main__': aoclib.printSolution(DAY, 1, part1()) aoclib.printSolution(DAY, 2, part2())