Day 5


In [29]:
import csv
import numpy as np

string_list = []
with open('inputs/input5.txt', 'rt') as f_input:
    csv_reader = csv.reader(f_input)
    for line in csv_reader:
        string_list += line

Day 5.1


In [30]:
def vowel_rule(s):
    vowels = list('aeiou')
    n = len([digit for digit in list(s) if digit in vowels])
    if n >= 3:
        return True
    return False

def two_in_a_row_rule(s):
    for i in range(len(s) - 1):
        if s[i] == s[i+1]:
            return True
    return False

def forbidden_rule(s):
    for item in ['ab', 'cd', 'pq', 'xy']:
        if item in s:
            return False
    return True

def nice_string(s):
    if forbidden_rule(s):
        if vowel_rule(s) and two_in_a_row_rule(s):
            return True
    return False

In [31]:
len([s for s in string_list if nice_string(s)])


Out[31]:
236

Day 5.2


In [60]:
def two_twice(s):
    for i in range(len(s) - 3):
        if s[i:i+2] in s[i+2:]:
            return True
    return False

def one_leap(s):
    for i in range(len(s) - 2):
        if s[i] == s[i+2]:
            return True
    return False

def nicest_string(s):
    return two_twice(s) and one_leap(s)

In [61]:
len([s for s in string_list if nicest_string(s)])


Out[61]:
51

In [ ]: