Browse Source

Day three (forgot to commit)

Petra Lamborn 1 year ago
parent
commit
19ffaa133b
2 changed files with 347 additions and 0 deletions
  1. 24
    0
      3.R
  2. 323
    0
      input3.txt

+ 24
- 0
3.R View File

@@ -0,0 +1,24 @@
1
+library(stringr)
2
+library(dplyr)
3
+
4
+input <- read.table("input3.txt", stringsAsFactors = FALSE, comment.char = '')[[1]] %>% str_split("")
5
+
6
+# actually a transposed matrix of the original
7
+input <- sapply(input, function(x) {x == '#'})
8
+width <- nrow(input)
9
+height <- ncol(input)
10
+# Unroll! Actually this is not needed
11
+# iv <- as.vector(input)
12
+grad <- function(map, down, across) {
13
+    # Horizontal and vertical coordinates
14
+    v <- seq(1, ncol(map), down)
15
+    h <- ((0:(length(v) - 1) * across) %% nrow(map)) + 1
16
+    # get vals at coordinates
17
+    apply(cbind(h, v), 1, function(x) {map[x[1], x[2]]})
18
+}
19
+
20
+# Part a (3:1 slope)
21
+sum(grad(input, 1, 3))
22
+
23
+# Part b (1:1, 3:1, 5:1, 7:1, 1:2 slopes)
24
+prod(sum(grad(input, 1, 1)), sum(grad(input, 1, 3)), sum(grad(input, 1, 5)), sum(grad(input, 1, 7)), sum(grad(input, 2, 1)))

+ 323
- 0
input3.txt View File

@@ -0,0 +1,323 @@
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
+....###..##.......#.###.#....#.
39
+..##........#........##.....#..
40
+.#..#.....#...####.##...##.....
41
+....#.#.#.....#.##..##.....#..#
42
+..............#.....#...#.....#
43
+.#.....#......###...........#.#
44
+.....#.#......#.##..#..........
45
+.#......###............#.#.##..
46
+.#.#....##.#..###.....#.##..#.#
47
+.......#.#.#..#..#..#...##..#.#
48
+.#.###...##.#.#.####.#.#...#...
49
+...#.#....#......##.##.#.......
50
+#...#.....##....#........##....
51
+.....###...#.##.#......##.#..#.
52
+..#...##.##.###..#..#......####
53
+.#.##.#..#.##..##..........##..
54
+..#.#.#..#.#.....#...###.....#.
55
+..#..#.#....#.##.............##
56
+.......#..###..#.#...#.....##.#
57
+####.#.#......#..#.##.........#
58
+..........#.....#..##......###.
59
+..#..............#...#..##.....
60
+......#.#.#..#.##.....####..##.
61
+.##.#..#.#....#.......#..#.....
62
+..#..#..#.##.#....###.#.#.#.#.#
63
+.....#....#......###..#........
64
+#.#.#..#...###.....#......#.##.
65
+...#.#....#.#......#........#..
66
+..#...###.#...#..#....##...#..#
67
+.###.##..#..#...###.#..#.####..
68
+#....#..##..##..#......#...##..
69
+#.#..#...#..#...###..#.#.##....
70
+##....#....##.####...#.#.###...
71
+##.#...#.......#.##.##....#...#
72
+..#.#..........#..#.#.#....#..#
73
+..#........#...#....#....#....#
74
+..#..#....#.......#........#...
75
+......#....#....##.#....#.#.##.
76
+.##...###.##.##....##.#...###..
77
+.....##..#.#.....###..#.....###
78
+....##.#.##...##..##........#..
79
+#...#..##.#.#....#......#...#..
80
+.###.##.#........#.####....#...
81
+#.##.....#..#...#..##.##..#.#..
82
+.....#.#..#....#..#...##.##.#..
83
+.#......#####...##...#.#.###.#.
84
+#......##....#.....#......##.#.
85
+#.#.##.###.#......#####..#.....
86
+........###.#...#..#.#........#
87
+....#....###..#.##.#...#....#..
88
+..........#..#.#....#...#.#...#
89
+#.##......###.#.#.#....####...#
90
+...#.#....#........##.#.....##.
91
+.....##..#.#.#..###...##...#...
92
+#...#...#....#....##........#..
93
+.....#.........##.#......#..#..
94
+#.....##..#.###.....#....##.##.
95
+...#..#..#.#........##...##.#.#
96
+..#..##.###.....#.#.....###.##.
97
+..###.........#...##.....###...
98
+...###...##.#...##....##.......
99
+.#.#..#...###..#.#....#....#...
100
+##..#.......#....#.#...#..#..#.
101
+..#......#....####..##..#.###.#
102
+..#.......##........#.#.#..#...
103
+.#.......#.##.#.##.#.......#..#
104
+###...#...#...#...#..#...#...##
105
+..#..........#..###........##..
106
+.##..#....##......##........#.#
107
+......#.##......#......##...#.#
108
+.#.#....#.#.#........#......#..
109
+.#.#..#....####..##...##....#..
110
+.#...##..#..#..#####....##.#...
111
+.##.#.#...#...#.#...#.##.#...#.
112
+###.#...##..#.###.#.....#.##.#.
113
+#.....#.###.#.#...#..#....#.#..
114
+..##..#....#......#.........###
115
+.#...#...##......#...#.####....
116
+..#.##...##..............#.#..#
117
+..#......#..##...........#..#.#
118
+..#####...#..#.......##...###..
119
+..##..#....#.#...###.#...#.....
120
+..#....#..#.#.......#..#.#.#...
121
+.##..#.#.....##....#.......#...
122
+...#.#..###...##....#....##..#.
123
+.....##..#...##.####....##...#.
124
+.......#.........#...#.##..####
125
+........###..#..#.##.###..#....
126
+.#.#..#.##.##.........#...#....
127
+.###......#.....#....##....####
128
+.##..##...........#.....#.....#
129
+#.#.#.#.#.#.##..#.#.#..#.##....
130
+.##.##...##..#....##..###..####
131
+#..##.#......#...###.........#.
132
+#..#...#..##..#..##.....##...#.
133
+#...##..#...##.#.###.#...#.....
134
+.###.....#.......#...#.##.###.#
135
+..........#.#......#...###...##
136
+..##....#.#..#....#.###...#..##
137
+#.#..#....##.##..##.........##.
138
+#.....#.##.###.#..#....##...#..
139
+...#........##...#..###..######
140
+#..#.#.#.#...#....#....###.#..#
141
+...##.##.##.....##..#........#.
142
+..#.#....#..#.......#...##.##.#
143
+###.##.......##..#.####...#.#..
144
+....#.#.....##.....#.#.##...#..
145
+.#..##..#.....#.#..#...#..#..#.
146
+.###....##...#......#.....#....
147
+##.##.###......#...#...###.#...
148
+#...#.##...#.#....##.....####..
149
+#.#.#.#...###...##.............
150
+..#....#.....##.#...#......#...
151
+....#...#......#...#..#...#.#..
152
+.###..#.....#..#...#....#...#..
153
+..#...#.#..###.......#..#.#...#
154
+#...###.##.....#....#..#.#..##.
155
+...#.##.#.##......#.#.#.##.....
156
+........####...##...##..#....#.
157
+.#.#....#....#.#...##.###...##.
158
+#.#...###.#.#.#....#....#.#....
159
+.####.#..#.#....#..#.#..#..#...
160
+#####...#...#...#....#.#.#..##.
161
+..###.##.###...#..........#.##.
162
+##.....#...#....###..###.#.#.#.
163
+#..##.#..#..#..#...#.#...###..#
164
+##....#.#...##......#.#...#...#
165
+.##..........#.#....#...#.##..#
166
+....#....####.#.####......#.###
167
+..##.#.....####.#.####.......#.
168
+#.##.##.#.....#.##......##...#.
169
+......###..#.....#.....##......
170
+..#..#....#.#...#.....#......##
171
+##..#..#..###.#.#..#..##.....#.
172
+#....#.#.....#####...#.#.......
173
+.....#..#....#.#.#..#...#...#..
174
+............#.##......##.##.#.#
175
+....#...#.#........###....#....
176
+..#..#...###.#....##..#..###.##
177
+#.##....#...#.....##..#.##.#...
178
+...##..###...#.#.....##.#......
179
+.#..#.##.#####..#.......#..###.
180
+...#.##...###.....####.#.#.....
181
+.#......##.#.#.#.#.##.#.....#..
182
+..#.##.#..##.......#.#.....##..
183
+..................#....#...#...
184
+.##.#..#.#.#..#.......#.#..##.#
185
+....#........#......#..####..#.
186
+#...#...##..##.#..#.......##...
187
+#..#..#..#..#........####..#.#.
188
+..#.#......#..#.##.##.#.#...#.#
189
+...#..#......#.#.###.#.##..##..
190
+..#...##.....#..#...##..#.#....
191
+#.........#....#..#....##.##..#
192
+..#..#.#....#..#...#.##.....#..
193
+...#..#...#.#.....#..##..#.#...
194
+....#........#.#....##..##..#..
195
+#.....#.#..#.......#.##.....#..
196
+.#.###.###...##...##..###...#..
197
+.##.##.......#.#......#.....#.#
198
+...#....##....#..#..........#.#
199
+..#.##.........#.#.....#.....#.
200
+...#.##..##.......##..##...#...
201
+#.##......##.##..#.....##...##.
202
+#.#.#..##...#.#............#.#.
203
+....#.....#......##...#.#.....#
204
+...#.#......#.#...###.......#..
205
+......##..###....#.#...#.#####.
206
+..#..#.#.#...##.#...###..##..#.
207
+##.##.#.#.##.#..#....#...#...#.
208
+#..#....######.##.#...#...#.#..
209
+.#..#.##....#..#.#.......#....#
210
+....#....#......##....##.#.#...
211
+.###......#..#..#.......####..#
212
+.#.#.....#..###...........##...
213
+.##..##.##.....####..#..#..##..
214
+..#..##.#......#...###.##..#.#.
215
+....##..#.....###..#.##....##.#
216
+#..#......#....#.........#.....
217
+.#...#.....#.#..#..##....#.....
218
+.##..#...#..##.#..#...........#
219
+..#..##........##.......#..#...
220
+#.....#....#....#.#.#...##.#...
221
+...#...#.#.#..#.##.#.#...#.....
222
+..#..#.#....#....###....#.#.#..
223
+...###..#...#..#....#.....#....
224
+...#...#.#..#.....#...###......
225
+##......#..........#.#.#..#.#.#
226
+....#.....#.....#..#..#.#.#.#..
227
+...####...#.##...#.#..#....#.#.
228
+#.##........##.............#.##
229
+#.#.#.#.#.....................#
230
+.#.###....#..##.##.##....#.....
231
+#.#...#.####.###...#..#..#.#...
232
+.##...#..###.......##..#.#.....
233
+#.#.#.#...#...#.##.....#.......
234
+.##.#.#.#......####..#.#.......
235
+###..........#......#...##...#.
236
+.........##...#.##...#.#.......
237
+...#.#.....#...#..#...#..##..#.
238
+.#..###...#.#.........###....#.
239
+##..#...#........#.........##..
240
+.....#...#.#...#.#.#...........
241
+..#....##...#.#..#..#.##....##.
242
+.##....#.#.....##.#..#..#...##.
243
+..##......#.#...#.#.......##.#.
244
+##...#..#...##.#........#.##...
245
+#......#.##..#.#..#.###.......#
246
+#.#...#.....#.#......#.#.#.....
247
+#.....#..#.......#....##.#.#..#
248
+###.#....#..##.#.##....#....#..
249
+#.##.##....#.#..#.#...#....#...
250
+####...#####...#.....#....##.#.
251
+....#.#...#.#.##.#.#.##.#.#.###
252
+#.....##.#.....#.#......#.#..#.
253
+.#....##.#..#........#...##.#..
254
+......#...#....##....##....##..
255
+..###.....#....##.#...#..#.....
256
+#....##...##.##..##.#...#...#..
257
+#..#...#...#.#....##..#.#....#.
258
+......................#.....#..
259
+.#..#...#.........#....##...###
260
+.##.#.#...##...#...#...#..#....
261
+.#.###....#.#............##..#.
262
+###..##.#.#.#.#....##...#......
263
+.##................####...##.##
264
+.#.#.........##....#.#.##.##.#.
265
+....#...#...#...##...#.##.#..#.
266
+.#.#........#..##.....#..#....#
267
+##.#..#.#....#.....#...#...#...
268
+.#...##....#.....##....#..#.#.#
269
+####.....#..#....#......###.##.
270
+##..##.#....###.....#...#......
271
+.##.#...#.....#.#..#.#..#.#...#
272
+.....#.#..#..#..###.#...###.#..
273
+.#.#.##.#..#.#..#...#..#.......
274
+..#.....#....#.##.##.##.......#
275
+.#..##....###...#..............
276
+#....#...#.#.......#....##.#...
277
+....#.#..##.#....#..#.#....#.#.
278
+#.........##...#.#.............
279
+#.#.......##.....#...##..##.#.#
280
+.......#....#..##...#..#######.
281
+.#.#...##........#..#.....#.#..
282
+.#.......#..#......#.##.##...##
283
+.........#............#....#..#
284
+.#......#...##...##...#....###.
285
+.........#...#.#.###.......#...
286
+###.#..#.#.#.#......##...#.#...
287
+.#.........##.#....###....#.#..
288
+#.#....#..#.##.#..#....##...#..
289
+###.#...#..#..##........#.###..
290
+.....#....#..#........#..#.##.#
291
+..#.....##......#....#..#.#.#..
292
+.#.........#.....#.....#.......
293
+......#....#.###..#.#....#....#
294
+..#.#..#.#.###.........#..#..#.
295
+..#..#.#.#.........#....##.#.#.
296
+#.......#........##...##....#..
297
+##..#..#...###...#..##..#..#.#.
298
+##..#..#....#.#..##..#..#.#..#.
299
+..##.....##.#..#.#........###..
300
+..#.#..#..##........#...#....##
301
+.##..#....##..#..#..#..#.#....#
302
+#....#.....##........#.....#.##
303
+......#....#.#..#......#.##....
304
+.......#..#..#......##.........
305
+......#...#..##.....#......#..#
306
+#..#..#....##....#........##..#
307
+##....#...#.#.....#####........
308
+...#.#..#.#.##.#.##..##...#....
309
+..#..#..#..#..#....#..#..##...#
310
+.#.....#....##.##....##.....#..
311
+#...#.....#.....#.#...#.#....#.
312
+.###...#..##....#..#...#.###...
313
+....#..##..#.......#.##.##..###
314
+#.......##.....#.......#.#...##
315
+#.....#.#.#....#.#......#.#.#..
316
+..##.....#..###......##........
317
+.....#...#..##....#......#.....
318
+#..#..#....#.#...#..###.......#
319
+.....#.....#....#..#...#.#..##.
320
+#####........#...#..#..##..#.#.
321
+.#..#...#.##....#.#..#......###
322
+#.###.#..#.....##..##....#...#.
323
+.#...#.#####....##..........##.