33 lines
796 B
Python
33 lines
796 B
Python
import numpy as np
|
|
from pathlib import Path
|
|
|
|
filepath = Path("./data/2_example")
|
|
filepath = Path("./data/2_input")
|
|
|
|
with open(filepath, 'r') as filein:
|
|
data = [np.array([int(i) for i in l.split()]) for l in filein.readlines()]
|
|
|
|
def report_is_safe(a: np.ndarray):
|
|
diff = np.diff(a)
|
|
if np.any(np.abs(diff)>3):
|
|
return False
|
|
sign = np.sign(diff)
|
|
steady = np.all(sign>0) or np.all(sign<0)
|
|
if not steady:
|
|
return False
|
|
return True
|
|
|
|
analysis = [report_is_safe(r) for r in data]
|
|
print(sum(analysis))
|
|
|
|
|
|
def brute_force(a: np.ndarray):
|
|
if report_is_safe(a):
|
|
return True
|
|
for i in range(len(a)):
|
|
if report_is_safe(np.delete(a, i)):
|
|
return True
|
|
return False
|
|
|
|
analysis = [brute_force(r) for r in data]
|
|
print(sum(analysis))
|