Solve 2016 days 6 to 8.

This commit is contained in:
2024-03-29 09:19:48 -04:00
parent fe016c9a2f
commit 440ae63b31
4 changed files with 154 additions and 0 deletions

72
2016/d7.py Normal file
View File

@@ -0,0 +1,72 @@
from lib import *
data = open(0).read().strip()
first = False
def has_abba(xs):
for i in range(len(xs) - 3):
if xs[i] == xs[i + 3] and xs[i + 1] == xs[i + 2] and xs[i] != xs[i + 1]:
return True
return False
if first:
r = 0
for line in data.splitlines():
is_abba = False
xs = ""
for c in line:
if c == "[":
if has_abba(xs):
is_abba = True
xs = ""
elif c == "]":
if has_abba(xs):
is_abba = False
xs = ""
break
xs = ""
xs += c
if xs != "" and has_abba(xs):
is_abba = True
if is_abba:
r += 1
print(r)
else:
def abas(xs) -> set:
r = set()
for i in range(len(xs) - 2):
if not in_square and xs[i] == xs[i + 2] and xs[i] != xs[i + 1]:
r.add(xs[i:i+3])
return r
def babs(xs) -> set:
r = set()
for i in range(len(xs) - 2):
if not in_square and xs[i] == xs[i + 2] and xs[i] != xs[i + 1]:
r.add(xs[i + 1] + xs[i] + xs[i + 1])
return r
r = 0
for line in data.splitlines():
aba, bab = set(), set()
in_square = False
xs = ""
for c in line:
if c == "[":
aba |= abas(xs)
xs = ""
elif c == "]":
bab |= babs(xs)
xs = ""
else:
xs += c
if xs != "":
aba |= abas(xs)
if aba & bab:
r += 1
print(r)