You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
908 B
Python

with open("input") as f:
puzzle_input = [n.strip() for n in f.readlines()]
nice_words = 0
def has_three_or_more_vowels(word):
vowels = 0
for char in word:
if char in "aeiou":
vowels += 1
if vowels >= 3:
return True
return False
def has_letter_twice_in_a_row(word):
last = word[0]
for char in word[1:]:
if last == char:
return True
last = char
return False
def contains_bad_string(word):
BAD_STRINGS = ["ab", "cd", "pq", "xy"]
for bad_string in BAD_STRINGS:
if bad_string in word:
return True
return False
def is_nice_word(word):
return (
has_three_or_more_vowels(word)
and has_letter_twice_in_a_row(word)
and not contains_bad_string(word)
)
for word in puzzle_input:
if is_nice_word(word):
nice_words += 1
print(nice_words)