-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathday2b.py
More file actions
33 lines (24 loc) · 709 Bytes
/
day2b.py
File metadata and controls
33 lines (24 loc) · 709 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
### Advent of code - Day 2 - second exercise ###
INPUT_FILENAME = 'day2_input.txt'
def is_safe(l :list) -> bool:
for i,j in zip(l, l[1:]):
if abs(i - j) > 3:
return False
inc = all(i < j for i, j in zip(l, l[1:]))
dec = all(i > j for i, j in zip(l, l[1:]))
return inc or dec
def subset_is_safe(l :list) -> bool:
for i in range(0,len(l)):
d2 = l[:i] + l[i+1:]
if is_safe(d2):
return True
return False
def main():
result = 0
with open(INPUT_FILENAME, 'r') as file:
for line in file:
data = [int(x) for x in line.strip().split()]
if is_safe(data) or subset_is_safe(data):
result += 1
print(f"{result} safe reports")
main()