45 lines
725 B
Python
45 lines
725 B
Python
#!/usr/bin/env python3
|
|
|
|
import operator
|
|
|
|
# 1
|
|
m = list()
|
|
with open("day02") as f:
|
|
for l in f:
|
|
m.append(list(map(int, l.split())))
|
|
|
|
def cmp2(l, op):
|
|
e1 = l[0]
|
|
for e2 in l[1: ]:
|
|
if op(e1, e2): e1 = e2
|
|
else: return False
|
|
return True
|
|
|
|
def safe(x):
|
|
if not cmp2(x, operator.lt) and not cmp2(x, operator.gt):
|
|
return False
|
|
if not cmp2(x, lambda e1, e2: abs(e1-e2) <= 3):
|
|
return False
|
|
return True
|
|
|
|
res = 0
|
|
for e in m:
|
|
if safe(e): res+=1
|
|
|
|
print(res)
|
|
|
|
# 2
|
|
def ssafe(x):
|
|
if safe(x): return True
|
|
|
|
for i in range(len(x)):
|
|
nx = x[:i] + x[i+1:]
|
|
if safe(nx): return True
|
|
|
|
return False
|
|
|
|
res = 0
|
|
for l in m:
|
|
if ssafe(l): res += 1
|
|
|
|
print(res)
|