diff --git a/day2part1.py b/day2part1.py new file mode 100644 index 0000000..40cb3af --- /dev/null +++ b/day2part1.py @@ -0,0 +1,80 @@ +import re + +def split_into_list(file_path): + f = open(file_path, "r") + list_of_lists = [] + for line in f: + stripped_line = line.strip() + stripped_line = str(stripped_line) + #line_list = stripped_line.split() + list_of_lists.append(stripped_line) + + f.close() + return(list_of_lists) + +def get_numbers(list): + nums = [] + for i in list: + x = re.search("^([\S]+)", i).group(0) + nums.append(x) + return nums + +def get_strings(list): + strings = [] + for i in list: + y = re.sub(r".*?(\w+)\s*$", r"\1", i) + strings.append(y) + return strings + +def get_letters(list): + letters = [] + for i in list: + z = re.match("([^:]+)", i).group(0) + z = z.split('.')[0].lstrip().split(' ')[1] + letters.append(z) + return letters + +def find_occurences(strings, letters): + j = 0 + number_of_occurences = [] + for i in strings: + corresponding_letter = letters[j] + k = i.count(corresponding_letter) + number_of_occurences.append(k) + j = j+1 + return number_of_occurences + +def find_max_min(nums): + mins = [] + maxes = [] + for i in nums: + splitted_nums = [] + splitted_nums = i.split('-') + min = int(splitted_nums[0]) + max = int(splitted_nums[1]) + mins.append(min) + maxes.append(max) + return mins, maxes + +def compare_occurences(number_of_occurences, mins, maxes): + j = 0 + valids = [] + for i in number_of_occurences: + min = mins[j] + max = maxes[j] + j = j+1 + if min <= i and max >= i: + valids.append("Valid") + else: + valids.append("Invalid") + return valids + +list = split_into_list("day2input.txt") +nums = get_numbers(list) +letters = get_letters(list) +strings = get_strings(list) +number_of_occurences = find_occurences(strings, letters) +mins, maxes = find_max_min(nums) +valids = compare_occurences(number_of_occurences, mins, maxes) +print(valids) +print(valids.count("Valid"))