1 changed files with 80 additions and 0 deletions
-
80day2part1.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")) |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue