-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathday2.py
More file actions
39 lines (33 loc) · 832 Bytes
/
day2.py
File metadata and controls
39 lines (33 loc) · 832 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
34
35
36
37
38
def part1(lines) -> int:
ans = 0
for l in lines:
nbs = [int(c) for c in l.split(" ")]
if validNbs(nbs):
ans += 1
return ans
def part2(lines) -> int:
ans = 0
for l in lines:
nbs = [int(c) for c in l.split(" ")]
for i in range(len(nbs)): # brute force, ugly
cur_nbs = nbs[:i] + nbs[i+1:]
if validNbs(cur_nbs):
ans += 1
break
return ans
def validNbs(nbs):
incr = nbs[0] < nbs[1]
valid = True
for i in range(1, len(nbs)):
diff = abs(nbs[i-1] - nbs[i])
if ((nbs[i] < nbs[i-1] and incr) or
(nbs[i] > nbs[i-1] and not incr)or
diff < 1 or diff >3):
valid = False
break
return valid
if __name__ == "__main__":
with open("inputs/day2", "r") as f:
lines = f.readlines()
print(part1(lines))
print(part2(lines))