advent-of-code/2015/day05.py

60 lines
1.2 KiB
Python
Raw Normal View History

2022-12-09 21:41:14 +00:00
import shared
import matrix
from collections import Counter
import numpy as np
letters = [x for x in 'abcdefghijklmnopqrstuvwxyz']
letter_doubles = [x+x for x in letters]
vowels = [x for x in 'aeiou']
no = ['ab','cd','pq','xy']
def check_pt1(s):
any_no = [True for x in no if x in s]
if any_no:
return False
vowel_count = 0
for l in s:
if l in vowels:
vowel_count += 1
if vowel_count < 3:
return False
for d in letter_doubles:
if d in s:
return True
return False
def pt1(strs):
okay = [s for s in strs if check_pt1(s)]
print(len(okay))
def check_pt2(s):
for idx in range(len(s)-1):
me = s[idx:idx+2]
index = s.rindex(me)
if index and index != idx and index != idx+1:
break
else:
return False
for idx in range(len(s)-2):
me = s[idx:idx+3]
if me[0] == me[2]:
return True
return False
def pt2(strs):
okay = [s for s in strs if check_pt2(s)]
print(len(okay))
def main():
with open(shared.get_fname(5), "r") as f:
inp = [x.rstrip() for x in f.readlines()]
pt1(inp)
pt2(inp)
if __name__ == "__main__":
main()