Skip to content

Commit 562f131

Browse files
committed
day 10 done
1 parent 710f734 commit 562f131

File tree

4 files changed

+367
-0
lines changed

4 files changed

+367
-0
lines changed

2022/python/day10/d10_1.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import logging
2+
import re
3+
from typing import Tuple
4+
5+
logging.basicConfig(level=logging.DEBUG)
6+
7+
_NOOP = re.compile(r"noop")
8+
_ADDX = re.compile(r"addx\s(-?\d+)")
9+
10+
def read_instruction(line):
11+
if _NOOP.match(line):
12+
return (1, 0)
13+
if _ADDX.match(line):
14+
modifier = _ADDX.findall(line)
15+
return (2, int(modifier[0]))
16+
17+
answer = 0
18+
check_interval = [20, 60, 100, 140, 180, 220]
19+
with open("input.txt", "r") as f:
20+
cycle = 0
21+
x = 1
22+
for line in f:
23+
(cycle_inc, modifier) = read_instruction(line.strip())
24+
logging.debug(f"cycles_curr: {cycle}, inc: {cycle_inc}. x_curr: {x}, modifier {modifier}")
25+
for i in range(cycle_inc):
26+
cycle += 1
27+
if cycle in check_interval:
28+
logging.debug(f"Reached check interval: ")
29+
answer += cycle * x
30+
31+
x += modifier
32+
33+
34+
35+
logging.info(f"answer = {answer}")
36+

2022/python/day10/d10_2.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import logging
2+
import re
3+
import matplotlib.pyplot as plt
4+
from typing import Tuple
5+
6+
logging.basicConfig(level=logging.DEBUG)
7+
8+
_NOOP = re.compile(r"noop")
9+
_ADDX = re.compile(r"addx\s(-?\d+)")
10+
11+
def read_instruction(line):
12+
if _NOOP.match(line):
13+
return (1, 0)
14+
if _ADDX.match(line):
15+
modifier = _ADDX.findall(line)
16+
return (2, int(modifier[0]))
17+
18+
answer = 0
19+
check_interval = [40, 80, 120, 160, 200, 240]
20+
screen = []
21+
current_row = 0
22+
logging.debug(screen)
23+
with open("input.txt", "r") as f:
24+
cycle = 0
25+
x = 1
26+
for line in f:
27+
(cycle_inc, modifier) = read_instruction(line.strip())
28+
for i in range(cycle_inc):
29+
cycle += 1
30+
if (cycle - 1) % 40 in [x - 1, x, x + 1]:
31+
screen.append((((cycle - 1) % 40), 6 - current_row))
32+
if cycle in check_interval:
33+
current_row += 1
34+
35+
x += modifier
36+
37+
fig, ax = plt.subplots(figsize=(10, 6))
38+
r1, r2 = map(list, zip(*screen))
39+
ax.scatter(x=r1, y=r2)
40+
plt.show()
41+
logging.info(f"answer = \n{screen}")
42+

2022/python/day10/input.txt

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
addx 1
2+
addx 4
3+
noop
4+
noop
5+
addx 30
6+
addx -24
7+
addx -1
8+
noop
9+
addx 4
10+
addx 1
11+
addx 5
12+
addx -4
13+
addx 5
14+
addx 4
15+
addx 1
16+
noop
17+
addx 5
18+
addx -1
19+
addx 5
20+
addx 3
21+
noop
22+
addx -38
23+
addx 9
24+
addx -4
25+
noop
26+
addx 3
27+
noop
28+
addx 2
29+
addx 3
30+
noop
31+
addx 2
32+
addx 3
33+
noop
34+
addx 2
35+
addx 3
36+
noop
37+
addx 2
38+
addx -17
39+
addx 22
40+
addx -2
41+
addx 5
42+
addx 2
43+
addx 3
44+
addx -2
45+
addx -36
46+
noop
47+
addx 5
48+
noop
49+
addx 3
50+
noop
51+
addx 2
52+
addx -5
53+
noop
54+
addx 10
55+
addx 3
56+
addx -2
57+
addx 3
58+
addx 2
59+
addx 4
60+
noop
61+
noop
62+
noop
63+
noop
64+
addx 3
65+
noop
66+
noop
67+
addx 7
68+
addx 1
69+
noop
70+
noop
71+
addx -38
72+
addx 39
73+
addx -32
74+
noop
75+
noop
76+
noop
77+
addx 5
78+
addx 2
79+
addx -1
80+
addx 4
81+
noop
82+
addx 5
83+
addx -2
84+
addx 5
85+
addx 2
86+
addx -26
87+
addx 31
88+
addx -2
89+
addx 4
90+
addx 3
91+
addx -18
92+
addx 19
93+
addx -38
94+
addx 7
95+
noop
96+
noop
97+
addx 34
98+
addx -39
99+
addx 8
100+
addx 5
101+
addx 2
102+
addx 10
103+
addx -5
104+
addx -2
105+
addx 5
106+
addx 2
107+
addx 11
108+
addx -6
109+
noop
110+
addx 3
111+
noop
112+
addx 2
113+
addx 3
114+
addx -2
115+
addx -38
116+
noop
117+
noop
118+
noop
119+
addx 5
120+
addx 11
121+
noop
122+
addx -3
123+
noop
124+
noop
125+
noop
126+
addx 2
127+
noop
128+
addx -11
129+
addx 16
130+
noop
131+
addx 3
132+
addx 2
133+
addx 8
134+
noop
135+
noop
136+
noop
137+
noop
138+
noop
139+
addx 4
140+
addx 3
141+
noop
142+
addx -20
143+
noop

2022/python/day10/test_input.txt

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
addx 15
2+
addx -11
3+
addx 6
4+
addx -3
5+
addx 5
6+
addx -1
7+
addx -8
8+
addx 13
9+
addx 4
10+
noop
11+
addx -1
12+
addx 5
13+
addx -1
14+
addx 5
15+
addx -1
16+
addx 5
17+
addx -1
18+
addx 5
19+
addx -1
20+
addx -35
21+
addx 1
22+
addx 24
23+
addx -19
24+
addx 1
25+
addx 16
26+
addx -11
27+
noop
28+
noop
29+
addx 21
30+
addx -15
31+
noop
32+
noop
33+
addx -3
34+
addx 9
35+
addx 1
36+
addx -3
37+
addx 8
38+
addx 1
39+
addx 5
40+
noop
41+
noop
42+
noop
43+
noop
44+
noop
45+
addx -36
46+
noop
47+
addx 1
48+
addx 7
49+
noop
50+
noop
51+
noop
52+
addx 2
53+
addx 6
54+
noop
55+
noop
56+
noop
57+
noop
58+
noop
59+
addx 1
60+
noop
61+
noop
62+
addx 7
63+
addx 1
64+
noop
65+
addx -13
66+
addx 13
67+
addx 7
68+
noop
69+
addx 1
70+
addx -33
71+
noop
72+
noop
73+
noop
74+
addx 2
75+
noop
76+
noop
77+
noop
78+
addx 8
79+
noop
80+
addx -1
81+
addx 2
82+
addx 1
83+
noop
84+
addx 17
85+
addx -9
86+
addx 1
87+
addx 1
88+
addx -3
89+
addx 11
90+
noop
91+
noop
92+
addx 1
93+
noop
94+
addx 1
95+
noop
96+
noop
97+
addx -13
98+
addx -19
99+
addx 1
100+
addx 3
101+
addx 26
102+
addx -30
103+
addx 12
104+
addx -1
105+
addx 3
106+
addx 1
107+
noop
108+
noop
109+
noop
110+
addx -9
111+
addx 18
112+
addx 1
113+
addx 2
114+
noop
115+
noop
116+
addx 9
117+
noop
118+
noop
119+
noop
120+
addx -1
121+
addx 2
122+
addx -37
123+
addx 1
124+
addx 3
125+
noop
126+
addx 15
127+
addx -21
128+
addx 22
129+
addx -6
130+
addx 1
131+
noop
132+
addx 2
133+
addx 1
134+
noop
135+
addx -10
136+
noop
137+
noop
138+
addx 20
139+
addx 1
140+
addx 2
141+
addx 2
142+
addx -6
143+
addx -11
144+
noop
145+
noop
146+
noop

0 commit comments

Comments
 (0)