python
solution
import re
import aoc
def setup():
return (aoc.get_lines(2), 0)
def safe(data):
order = 0 if data[0] < data[1] else 1
for i in range(0, len(data) - 1):
h = data[i]
t = data[i + 1]
d = abs(h - t)
if d not in [1, 2, 3] or (order == 0 and h >= t) or (
order == 1 and h <= t):
return False
return True
def one():
lines, acc = setup()
for l in lines:
if safe([int(x) for x in re.findall(r'\d+', l)]):
acc += 1
print(acc)
def two():
lines, acc = setup()
for l in lines:
data = [int(x) for x in re.findall(r'\d+', l)]
for i in range(len(data)):
if safe(data[:i] + data[i + 1:]):
acc += 1
break
print(acc)
one()
two()