tangled
alpha
login
or
join now
nove.dev
/
aoc-2024
0
fork
atom
retroactive, to derust my rust
0
fork
atom
overview
issues
pulls
pipelines
day2 part1
nove.dev
3 months ago
0e4ac584
ae2cb344
+1062
-1
3 changed files
expand all
collapse all
unified
split
input
day2.test.txt
day2.txt
src
lib.rs
+6
input/day2.test.txt
···
1
1
+
7 6 4 2 1
2
2
+
1 2 7 8 9
3
3
+
9 7 6 2 1
4
4
+
1 3 2 4 5
5
5
+
8 6 4 4 1
6
6
+
1 3 6 7 9
+1000
input/day2.txt
···
1
1
+
10 11 13 16 15
2
2
+
3 6 9 10 11 12 12
3
3
+
43 46 49 52 54 58
4
4
+
59 60 61 63 65 68 75
5
5
+
60 62 63 65 63 66 69 71
6
6
+
80 83 85 88 85 87 84
7
7
+
30 31 32 31 33 33
8
8
+
9 11 14 12 16
9
9
+
38 39 40 43 42 45 50
10
10
+
58 61 63 63 66
11
11
+
15 17 18 20 20 21 23 21
12
12
+
17 19 22 24 25 25 28 28
13
13
+
60 63 66 67 67 69 73
14
14
+
42 44 44 45 52
15
15
+
22 23 27 30 32 34
16
16
+
22 23 25 26 28 31 35 33
17
17
+
11 14 16 19 22 26 26
18
18
+
38 41 44 48 52
19
19
+
15 17 21 24 26 33
20
20
+
50 51 54 61 62 65 68
21
21
+
37 40 42 44 49 50 47
22
22
+
6 7 8 14 14
23
23
+
17 20 25 27 31
24
24
+
68 69 70 73 76 81 87
25
25
+
83 81 82 83 85 87 90 92
26
26
+
52 51 54 56 58 57
27
27
+
93 90 91 92 92
28
28
+
12 9 10 12 14 15 16 20
29
29
+
26 24 26 27 33
30
30
+
17 15 14 17 19
31
31
+
99 96 97 96 97 99 98
32
32
+
9 7 5 8 8
33
33
+
59 58 61 63 62 64 68
34
34
+
24 23 25 28 26 28 35
35
35
+
93 90 92 94 94 95
36
36
+
72 69 72 73 76 77 77 75
37
37
+
46 45 47 47 49 49
38
38
+
61 60 63 64 64 66 70
39
39
+
35 32 35 36 37 37 40 47
40
40
+
6 3 6 9 13 15 16
41
41
+
29 28 31 33 35 36 40 38
42
42
+
22 21 25 26 26
43
43
+
51 50 51 54 58 60 64
44
44
+
83 82 86 88 95
45
45
+
79 76 83 86 89
46
46
+
19 17 23 25 26 25
47
47
+
19 18 21 28 30 31 31
48
48
+
72 70 72 73 74 77 82 86
49
49
+
40 39 40 47 53
50
50
+
7 7 9 12 15 18 19
51
51
+
57 57 59 62 63 65 63
52
52
+
57 57 59 62 65 66 66
53
53
+
26 26 29 31 33 34 38
54
54
+
44 44 47 50 52 59
55
55
+
19 19 21 20 22 25 27
56
56
+
76 76 79 77 74
57
57
+
61 61 64 63 65 65
58
58
+
80 80 81 83 85 83 87
59
59
+
63 63 66 67 65 71
60
60
+
48 48 48 50 51 53 56 58
61
61
+
17 17 17 18 17
62
62
+
66 66 68 68 68
63
63
+
78 78 79 79 83
64
64
+
1 1 3 4 7 8 8 13
65
65
+
14 14 18 20 21
66
66
+
22 22 25 27 31 28
67
67
+
32 32 34 38 38
68
68
+
49 49 51 52 54 56 60 64
69
69
+
85 85 89 91 93 94 99
70
70
+
28 28 29 30 35 38 39
71
71
+
10 10 11 18 20 22 25 24
72
72
+
87 87 90 96 96
73
73
+
47 47 48 51 58 62
74
74
+
7 7 8 9 11 12 18 25
75
75
+
70 74 75 77 79 82
76
76
+
27 31 32 33 34 35 37 34
77
77
+
45 49 52 55 57 60 62 62
78
78
+
39 43 44 47 50 51 55
79
79
+
42 46 49 50 53 54 59
80
80
+
5 9 12 10 12
81
81
+
69 73 74 73 74 75 72
82
82
+
76 80 82 84 81 84 84
83
83
+
29 33 31 33 35 39
84
84
+
49 53 54 55 56 57 54 59
85
85
+
42 46 46 47 50 52
86
86
+
65 69 69 72 70
87
87
+
72 76 76 78 80 82 83 83
88
88
+
45 49 52 53 53 57
89
89
+
37 41 42 45 45 50
90
90
+
56 60 62 63 67 68
91
91
+
35 39 40 43 46 49 53 51
92
92
+
7 11 15 17 20 21 24 24
93
93
+
2 6 7 9 13 17
94
94
+
43 47 50 52 56 59 64
95
95
+
12 16 19 22 28 30 33
96
96
+
43 47 48 53 54 57 55
97
97
+
83 87 88 95 95
98
98
+
57 61 63 64 66 73 75 79
99
99
+
57 61 64 69 71 76
100
100
+
86 93 95 96 97 99
101
101
+
30 35 37 39 38
102
102
+
11 17 19 20 20
103
103
+
20 26 29 32 36
104
104
+
68 73 74 77 80 87
105
105
+
37 42 44 43 46 49 50 51
106
106
+
48 55 58 56 57 58 57
107
107
+
36 42 39 42 43 44 44
108
108
+
20 25 28 25 27 29 31 35
109
109
+
14 20 23 21 22 23 25 32
110
110
+
77 82 83 83 84 86 88 91
111
111
+
30 36 37 40 40 42 43 42
112
112
+
15 21 22 25 27 27 28 28
113
113
+
46 52 55 55 56 58 62
114
114
+
15 22 23 23 24 27 34
115
115
+
22 29 30 34 37
116
116
+
5 11 14 18 20 18
117
117
+
7 12 16 18 21 22 22
118
118
+
39 45 47 51 54 56 58 62
119
119
+
57 63 67 70 71 76
120
120
+
72 79 84 86 87 90
121
121
+
80 85 92 93 96 93
122
122
+
72 78 83 84 84
123
123
+
46 52 55 57 58 64 68
124
124
+
69 75 78 80 87 93
125
125
+
89 88 85 82 80 77 74 75
126
126
+
14 13 11 9 8 5 2 2
127
127
+
93 91 88 86 83 79
128
128
+
39 37 35 34 32 30 28 21
129
129
+
52 51 52 49 47 45
130
130
+
96 95 94 93 90 88 91 93
131
131
+
35 34 36 35 34 33 33
132
132
+
39 37 38 37 34 32 31 27
133
133
+
24 23 24 22 16
134
134
+
60 57 57 54 53 52 50 48
135
135
+
36 35 34 33 33 32 31 34
136
136
+
76 74 71 71 71
137
137
+
32 29 28 26 23 23 19
138
138
+
91 88 86 86 83 77
139
139
+
42 41 39 35 33
140
140
+
27 24 22 18 19
141
141
+
19 16 15 13 10 6 6
142
142
+
50 49 45 43 41 38 34
143
143
+
48 46 45 41 34
144
144
+
83 80 78 77 71 68
145
145
+
46 44 38 37 39
146
146
+
39 38 37 31 29 27 27
147
147
+
21 19 18 16 15 9 5
148
148
+
81 79 78 71 69 66 63 56
149
149
+
69 71 68 67 66 65
150
150
+
11 12 11 10 7 10
151
151
+
83 84 83 81 78 77 75 75
152
152
+
19 20 18 15 14 12 11 7
153
153
+
80 81 80 77 75 69
154
154
+
17 19 20 17 16 15
155
155
+
45 48 47 44 41 44 41 42
156
156
+
40 43 41 44 44
157
157
+
56 57 59 57 53
158
158
+
93 96 99 96 93 91 88 83
159
159
+
79 80 78 75 73 73 72
160
160
+
4 7 4 4 3 4
161
161
+
65 66 65 65 62 60 58 58
162
162
+
43 45 44 44 40
163
163
+
81 83 82 82 81 76
164
164
+
92 95 91 89 88 87
165
165
+
30 31 27 24 26
166
166
+
20 22 21 18 15 11 11
167
167
+
31 32 31 27 26 24 21 17
168
168
+
43 46 45 44 42 40 36 31
169
169
+
47 50 48 47 46 40 37 36
170
170
+
23 26 24 22 16 15 12 13
171
171
+
86 88 86 84 81 80 75 75
172
172
+
88 90 88 87 82 80 76
173
173
+
83 85 80 77 75 70
174
174
+
13 13 12 10 8 5 3 1
175
175
+
48 48 46 44 41 43
176
176
+
86 86 83 81 78 78
177
177
+
82 82 81 80 77 73
178
178
+
23 23 20 19 18 16 14 7
179
179
+
76 76 75 73 71 73 71
180
180
+
41 41 39 38 35 37 39
181
181
+
98 98 96 94 92 93 93
182
182
+
49 49 48 51 47
183
183
+
79 79 81 80 77 75 72 67
184
184
+
37 37 36 35 35 32
185
185
+
18 18 17 15 15 13 15
186
186
+
6 6 6 4 4
187
187
+
35 35 34 33 33 29
188
188
+
71 71 70 70 69 67 62
189
189
+
91 91 89 85 82 79 77
190
190
+
62 62 60 56 58
191
191
+
16 16 14 11 7 7
192
192
+
88 88 86 82 78
193
193
+
88 88 86 85 81 78 73
194
194
+
21 21 19 18 11 8
195
195
+
12 12 6 4 6
196
196
+
79 79 74 71 71
197
197
+
65 65 60 59 55
198
198
+
45 45 43 40 38 33 28
199
199
+
44 40 37 36 34 33 32 31
200
200
+
15 11 8 7 9
201
201
+
83 79 77 74 74
202
202
+
68 64 62 60 59 55
203
203
+
77 73 71 68 67 64 61 55
204
204
+
56 52 50 49 47 49 48
205
205
+
74 70 67 70 68 66 68
206
206
+
56 52 54 52 49 47 47
207
207
+
31 27 25 26 23 21 20 16
208
208
+
89 85 83 86 81
209
209
+
38 34 34 31 28 26 24
210
210
+
48 44 43 40 38 38 40
211
211
+
23 19 19 17 16 15 15
212
212
+
93 89 88 87 86 86 82
213
213
+
91 87 85 85 82 77
214
214
+
58 54 50 48 46 44 41
215
215
+
90 86 82 80 77 76 77
216
216
+
83 79 77 73 73
217
217
+
52 48 47 43 39
218
218
+
38 34 30 27 21
219
219
+
98 94 93 92 85 82
220
220
+
63 59 53 51 52
221
221
+
69 65 63 61 56 55 55
222
222
+
84 80 75 74 70
223
223
+
68 64 58 55 54 49
224
224
+
28 23 22 19 17 16
225
225
+
27 20 19 16 14 17
226
226
+
78 73 72 69 66 66
227
227
+
23 18 16 13 11 8 7 3
228
228
+
29 22 19 18 15 12 10 3
229
229
+
26 21 23 21 18 15 13 12
230
230
+
48 43 44 41 38 35 36
231
231
+
20 15 12 10 7 9 9
232
232
+
37 30 28 25 23 25 21
233
233
+
24 18 19 16 14 7
234
234
+
38 31 30 30 29 26
235
235
+
11 5 5 2 4
236
236
+
74 67 64 63 62 62 60 60
237
237
+
95 90 88 87 87 84 80
238
238
+
36 29 26 25 25 22 19 13
239
239
+
70 64 60 59 57 56
240
240
+
93 87 83 80 78 77 78
241
241
+
77 72 68 65 65
242
242
+
65 58 54 53 50 48 44
243
243
+
91 84 80 77 75 74 69
244
244
+
84 77 76 71 69 68
245
245
+
74 67 65 59 61
246
246
+
58 52 50 45 45
247
247
+
49 43 41 40 34 33 31 27
248
248
+
78 71 70 63 58
249
249
+
32 33 36 39 37
250
250
+
29 30 32 35 36 37 38 38
251
251
+
5 7 9 10 13 17
252
252
+
36 37 39 41 42 44 50
253
253
+
62 64 65 66 69 68 71
254
254
+
27 29 26 29 31 34 32
255
255
+
34 37 39 40 43 41 41
256
256
+
36 39 42 43 45 44 45 49
257
257
+
78 80 81 80 82 83 89
258
258
+
7 9 12 12 13 16 18
259
259
+
32 35 36 36 38 35
260
260
+
10 11 11 13 13
261
261
+
43 44 44 46 48 52
262
262
+
49 51 53 55 56 56 63
263
263
+
14 16 18 20 24 27 28 29
264
264
+
64 65 69 70 72 73 76 73
265
265
+
63 66 69 70 72 76 76
266
266
+
33 35 39 40 41 42 46
267
267
+
13 15 18 21 25 32
268
268
+
31 33 35 36 39 44 47
269
269
+
56 57 62 65 66 69 66
270
270
+
18 21 22 23 28 28
271
271
+
67 68 69 72 78 82
272
272
+
81 83 84 89 92 99
273
273
+
54 51 54 55 57 58
274
274
+
56 54 57 59 61 62 61
275
275
+
62 61 63 66 67 68 68
276
276
+
40 37 38 40 43 46 48 52
277
277
+
37 34 37 38 39 42 45 52
278
278
+
6 4 6 9 7 8 10
279
279
+
31 30 32 31 28
280
280
+
94 92 93 96 98 97 99 99
281
281
+
70 69 72 71 75
282
282
+
18 15 17 16 23
283
283
+
75 72 72 75 78 81
284
284
+
33 30 32 32 35 36 35
285
285
+
51 50 52 53 53 53
286
286
+
53 51 54 54 58
287
287
+
37 34 34 35 38 45
288
288
+
17 14 17 21 23 24 26
289
289
+
71 69 72 74 78 80 82 80
290
290
+
15 13 17 19 19
291
291
+
80 78 80 84 86 90
292
292
+
25 22 26 29 34
293
293
+
83 82 88 89 92 95 96
294
294
+
53 51 52 53 54 60 59
295
295
+
35 34 39 40 41 41
296
296
+
65 62 67 70 73 76 79 83
297
297
+
82 80 82 83 88 91 97
298
298
+
65 65 67 69 70 73 74 75
299
299
+
22 22 23 25 27 26
300
300
+
69 69 72 75 78 81 82 82
301
301
+
40 40 43 44 46 49 50 54
302
302
+
81 81 84 87 89 96
303
303
+
4 4 7 4 7 10
304
304
+
73 73 70 73 70
305
305
+
86 86 87 86 86
306
306
+
72 72 74 73 77
307
307
+
7 7 9 10 7 9 11 16
308
308
+
54 54 57 57 58
309
309
+
53 53 56 57 59 62 62 59
310
310
+
74 74 76 76 76
311
311
+
80 80 82 83 83 86 90
312
312
+
2 2 2 4 9
313
313
+
88 88 90 93 97 98 99
314
314
+
32 32 36 37 34
315
315
+
72 72 74 78 78
316
316
+
32 32 36 37 40 41 42 46
317
317
+
12 12 15 19 21 26
318
318
+
3 3 9 10 11 13
319
319
+
23 23 30 32 30
320
320
+
58 58 65 67 69 69
321
321
+
39 39 42 43 49 50 51 55
322
322
+
9 9 10 17 19 22 27
323
323
+
82 86 89 92 93 96
324
324
+
34 38 40 42 44 46 45
325
325
+
22 26 28 29 29
326
326
+
52 56 59 62 65 66 70
327
327
+
61 65 68 71 74 75 77 83
328
328
+
38 42 39 41 44 47 50
329
329
+
63 67 68 70 68 71 68
330
330
+
33 37 38 36 38 38
331
331
+
3 7 10 12 11 14 18
332
332
+
21 25 27 25 27 32
333
333
+
45 49 49 50 52 55
334
334
+
27 31 33 33 34 31
335
335
+
8 12 13 13 15 17 17
336
336
+
6 10 10 11 14 16 20
337
337
+
65 69 72 72 75 76 82
338
338
+
86 90 94 96 99
339
339
+
47 51 55 57 60 62 59
340
340
+
63 67 69 72 74 78 79 79
341
341
+
13 17 18 22 23 27
342
342
+
58 62 65 66 67 71 78
343
343
+
66 70 72 74 76 78 83 84
344
344
+
27 31 32 37 40 38
345
345
+
57 61 63 68 68
346
346
+
27 31 34 36 42 43 47
347
347
+
38 42 43 44 46 49 55 60
348
348
+
4 9 11 12 14 16
349
349
+
20 26 27 29 32 30
350
350
+
75 81 84 86 87 90 90
351
351
+
16 22 23 26 30
352
352
+
9 15 16 19 22 25 28 34
353
353
+
26 33 32 35 38
354
354
+
1 8 10 12 9 6
355
355
+
6 12 15 13 14 16 19 19
356
356
+
80 85 88 89 91 93 90 94
357
357
+
59 65 68 69 67 73
358
358
+
8 14 16 18 19 21 21 24
359
359
+
85 90 91 92 92 93 92
360
360
+
32 38 38 41 43 46 47 47
361
361
+
53 60 61 62 62 64 67 71
362
362
+
67 73 75 78 78 81 88
363
363
+
61 67 70 74 77 78 79 80
364
364
+
67 74 78 79 81 80
365
365
+
24 29 31 35 38 38
366
366
+
7 12 16 19 23
367
367
+
13 19 20 24 27 28 29 35
368
368
+
53 60 63 70 72
369
369
+
69 75 78 79 86 88 86
370
370
+
3 10 12 13 20 20
371
371
+
31 36 39 41 46 50
372
372
+
64 71 77 79 82 84 90
373
373
+
83 80 77 74 75
374
374
+
99 97 94 92 89 86 83 83
375
375
+
59 57 55 53 49
376
376
+
77 75 74 73 67
377
377
+
10 8 5 4 2 4 3 1
378
378
+
37 34 33 36 35 34 36
379
379
+
55 52 51 53 53
380
380
+
30 27 24 23 24 23 21 17
381
381
+
84 83 86 85 78
382
382
+
36 34 33 33 31
383
383
+
19 16 16 14 13 14
384
384
+
80 78 76 76 76
385
385
+
70 68 66 64 64 61 60 56
386
386
+
84 81 80 79 79 73
387
387
+
93 91 88 84 83
388
388
+
63 61 57 56 53 52 50 51
389
389
+
85 84 80 77 77
390
390
+
85 84 82 81 77 74 70
391
391
+
21 20 16 15 12 9 2
392
392
+
41 39 38 32 31 28
393
393
+
82 81 80 74 76
394
394
+
64 61 55 54 53 50 50
395
395
+
39 36 31 28 26 22
396
396
+
78 75 68 65 60
397
397
+
96 97 95 92 89 88 86 84
398
398
+
97 98 96 94 97
399
399
+
86 89 87 84 84
400
400
+
58 61 58 56 52
401
401
+
72 73 72 70 69 68 67 60
402
402
+
33 34 35 32 29 28
403
403
+
62 65 63 61 60 59 61 63
404
404
+
33 36 39 36 34 31 31
405
405
+
48 50 49 52 50 46
406
406
+
17 20 22 20 19 12
407
407
+
65 66 65 64 64 62 59
408
408
+
84 85 84 84 85
409
409
+
31 32 31 28 26 26 26
410
410
+
63 66 64 61 61 58 57 53
411
411
+
66 69 68 66 66 60
412
412
+
20 23 19 16 15
413
413
+
85 86 83 81 77 74 75
414
414
+
49 50 48 44 44
415
415
+
54 57 53 51 47
416
416
+
45 46 42 39 38 36 29
417
417
+
29 32 30 29 24 21 18 17
418
418
+
19 22 21 16 15 13 14
419
419
+
76 77 72 71 68 65 64 64
420
420
+
86 87 85 83 77 76 72
421
421
+
62 63 61 60 57 54 47 41
422
422
+
36 36 35 33 32 30 28 25
423
423
+
98 98 96 93 96
424
424
+
72 72 71 68 67 65 62 62
425
425
+
29 29 26 23 21 19 17 13
426
426
+
41 41 39 37 36 29
427
427
+
36 36 33 30 27 29 28
428
428
+
77 77 78 75 72 71 73
429
429
+
56 56 53 52 49 48 50 50
430
430
+
75 75 77 74 70
431
431
+
78 78 79 77 74 73 71 66
432
432
+
30 30 29 26 25 22 22 19
433
433
+
43 43 43 41 38 36 37
434
434
+
18 18 18 17 16 15 13 13
435
435
+
55 55 52 51 48 48 44
436
436
+
65 65 63 63 62 60 54
437
437
+
58 58 54 51 50
438
438
+
51 51 50 46 49
439
439
+
63 63 62 59 57 53 53
440
440
+
68 68 64 61 58 55 54 50
441
441
+
32 32 30 27 26 22 21 15
442
442
+
66 66 60 57 54 51 49 47
443
443
+
84 84 81 78 72 75
444
444
+
81 81 75 74 74
445
445
+
49 49 46 44 42 41 35 31
446
446
+
41 41 39 38 32 30 23
447
447
+
98 94 91 88 86 85 83
448
448
+
66 62 60 58 59
449
449
+
66 62 59 58 58
450
450
+
63 59 58 55 54 53 50 46
451
451
+
69 65 62 59 58 55 48
452
452
+
37 33 36 34 31
453
453
+
53 49 48 46 44 47 49
454
454
+
97 93 92 94 91 89 86 86
455
455
+
76 72 71 70 73 72 68
456
456
+
39 35 33 31 34 27
457
457
+
70 66 65 65 64
458
458
+
89 85 84 83 82 80 80 81
459
459
+
77 73 70 68 68 68
460
460
+
66 62 59 58 58 57 53
461
461
+
43 39 36 36 33 32 25
462
462
+
79 75 72 70 66 65
463
463
+
71 67 65 62 58 56 53 55
464
464
+
82 78 75 71 71
465
465
+
40 36 32 31 29 28 27 23
466
466
+
91 87 86 83 82 78 72
467
467
+
76 72 70 69 64 63 60 57
468
468
+
69 65 60 57 59
469
469
+
24 20 18 17 14 8 8
470
470
+
43 39 37 34 32 31 24 20
471
471
+
74 70 63 62 60 54
472
472
+
21 16 13 12 11 10 8
473
473
+
79 73 72 69 66 63 60 61
474
474
+
30 25 23 21 19 19
475
475
+
63 57 55 52 49 47 46 42
476
476
+
26 19 18 17 16 14 7
477
477
+
60 54 56 53 52 49
478
478
+
42 37 36 39 38 37 35 36
479
479
+
81 76 79 77 74 74
480
480
+
27 20 19 18 15 12 15 11
481
481
+
58 53 52 53 50 44
482
482
+
17 12 10 9 8 7 7 5
483
483
+
26 21 20 20 21
484
484
+
99 93 90 87 87 84 82 82
485
485
+
31 24 21 18 15 12 12 8
486
486
+
36 31 29 27 26 26 19
487
487
+
32 27 26 22 20 18
488
488
+
75 68 64 61 59 62
489
489
+
22 15 13 9 9
490
490
+
64 58 57 53 49
491
491
+
47 42 40 36 33 30 28 23
492
492
+
19 12 10 4 3
493
493
+
20 14 11 10 9 7 1 4
494
494
+
16 10 5 4 2 2
495
495
+
88 83 78 75 71
496
496
+
98 92 87 86 83 81 75
497
497
+
70 72 74 77 75
498
498
+
36 38 40 43 46 46
499
499
+
40 42 44 45 47 48 49 53
500
500
+
73 75 77 80 82 89
501
501
+
67 69 67 68 71
502
502
+
80 83 85 87 89 87 84
503
503
+
71 73 74 71 74 74
504
504
+
31 34 36 33 34 35 39
505
505
+
77 80 79 82 83 84 90
506
506
+
19 22 25 25 27 28
507
507
+
74 76 77 77 78 79 82 79
508
508
+
91 94 94 95 95
509
509
+
66 69 70 71 71 72 76
510
510
+
44 47 49 52 52 58
511
511
+
4 6 7 11 14 16 18
512
512
+
80 81 85 87 89 88
513
513
+
81 84 86 90 93 93
514
514
+
5 8 10 12 14 18 22
515
515
+
15 16 20 21 26
516
516
+
16 19 24 26 27
517
517
+
81 83 86 88 93 94 91
518
518
+
61 62 63 66 71 74 74
519
519
+
13 14 16 23 27
520
520
+
46 47 53 54 57 63
521
521
+
34 33 36 38 41 43 46 48
522
522
+
50 47 49 52 55 56 58 57
523
523
+
10 9 10 12 12
524
524
+
36 33 34 35 37 39 40 44
525
525
+
68 66 67 69 71 74 80
526
526
+
83 80 81 79 80 81
527
527
+
78 76 78 79 78 80 83 80
528
528
+
56 53 56 54 57 57
529
529
+
31 28 29 31 30 34
530
530
+
62 59 56 58 63
531
531
+
6 5 7 7 9
532
532
+
22 19 21 23 23 24 21
533
533
+
31 28 30 33 34 36 36 36
534
534
+
65 64 65 68 68 70 71 75
535
535
+
7 6 8 11 11 12 13 18
536
536
+
60 58 59 61 63 65 69 72
537
537
+
48 46 47 49 53 51
538
538
+
78 77 81 84 86 88 88
539
539
+
15 13 15 16 19 23 27
540
540
+
48 46 50 52 54 55 58 63
541
541
+
18 16 18 19 25 27 29
542
542
+
71 68 69 72 73 80 82 80
543
543
+
68 66 68 70 77 77
544
544
+
75 74 76 79 85 86 90
545
545
+
69 67 70 72 74 81 83 89
546
546
+
66 66 67 70 72 73
547
547
+
6 6 9 11 10
548
548
+
15 15 16 19 19
549
549
+
53 53 54 57 58 62
550
550
+
79 79 82 85 91
551
551
+
25 25 23 25 28 29
552
552
+
1 1 3 1 4 1
553
553
+
80 80 81 82 80 82 85 85
554
554
+
36 36 38 41 40 41 45
555
555
+
8 8 10 13 16 13 16 21
556
556
+
7 7 7 10 12 13 15 18
557
557
+
39 39 41 43 43 46 48 45
558
558
+
10 10 13 13 14 17 17
559
559
+
71 71 72 74 76 76 80
560
560
+
53 53 56 59 59 65
561
561
+
19 19 23 26 28 29 32
562
562
+
67 67 68 69 71 75 74
563
563
+
62 62 65 69 71 73 74 74
564
564
+
42 42 46 48 49 51 55
565
565
+
47 47 51 53 56 58 63
566
566
+
54 54 61 64 65
567
567
+
77 77 84 85 87 84
568
568
+
15 15 20 23 24 25 25
569
569
+
87 87 94 95 99
570
570
+
17 17 22 24 29
571
571
+
42 46 47 49 51 54 55 57
572
572
+
54 58 59 62 59
573
573
+
60 64 66 67 69 71 73 73
574
574
+
6 10 11 14 15 18 22
575
575
+
46 50 52 55 58 61 68
576
576
+
13 17 20 23 22 25 28
577
577
+
35 39 40 43 46 45 44
578
578
+
24 28 31 29 32 32
579
579
+
24 28 30 31 30 33 36 40
580
580
+
75 79 80 81 78 79 85
581
581
+
23 27 27 29 30
582
582
+
47 51 52 52 53 51
583
583
+
34 38 38 41 43 44 46 46
584
584
+
61 65 66 66 70
585
585
+
86 90 91 91 97
586
586
+
5 9 11 13 15 18 22 24
587
587
+
70 74 77 81 83 81
588
588
+
5 9 12 16 19 19
589
589
+
61 65 66 70 72 75 79
590
590
+
59 63 67 70 73 78
591
591
+
12 16 18 24 27
592
592
+
19 23 25 26 28 33 36 33
593
593
+
78 82 87 89 91 91
594
594
+
76 80 83 88 92
595
595
+
8 12 14 21 28
596
596
+
24 29 30 32 33 34 36
597
597
+
51 58 60 61 62 63 61
598
598
+
38 45 47 50 50
599
599
+
57 63 64 66 67 68 72
600
600
+
6 12 14 15 18 20 26
601
601
+
5 10 9 12 14
602
602
+
50 55 52 53 51
603
603
+
16 21 18 20 23 25 25
604
604
+
9 14 11 14 18
605
605
+
72 79 80 82 80 81 82 87
606
606
+
85 91 92 92 93 94
607
607
+
85 91 91 93 92
608
608
+
3 8 10 10 11 11
609
609
+
12 19 19 21 25
610
610
+
40 47 48 51 52 54 54 61
611
611
+
78 83 84 88 90 92 93 95
612
612
+
48 54 57 61 58
613
613
+
76 81 82 85 89 89
614
614
+
56 63 64 65 68 72 76
615
615
+
64 71 72 75 76 80 85
616
616
+
38 45 50 53 54 56
617
617
+
56 61 62 67 69 70 67
618
618
+
45 51 54 59 60 62 64 64
619
619
+
2 8 11 18 19 23
620
620
+
60 67 70 71 73 80 82 89
621
621
+
65 63 61 59 60
622
622
+
85 82 79 76 73 71 69 69
623
623
+
18 17 14 11 8 6 5 1
624
624
+
20 18 16 15 13 12 7
625
625
+
61 60 58 56 53 54 51
626
626
+
54 51 54 52 51 52
627
627
+
14 12 11 8 11 8 7 7
628
628
+
81 78 77 76 78 75 72 68
629
629
+
17 15 13 12 15 10
630
630
+
44 43 41 39 39 38 37
631
631
+
63 61 58 57 57 55 56
632
632
+
82 80 79 77 75 73 73 73
633
633
+
98 95 92 92 88
634
634
+
54 52 52 51 49 46 41
635
635
+
16 15 14 12 8 6 5
636
636
+
44 41 37 36 37
637
637
+
39 36 34 32 28 27 24 24
638
638
+
94 92 89 85 84 80
639
639
+
61 60 56 54 51 49 48 42
640
640
+
50 48 42 41 39
641
641
+
92 90 89 87 80 82
642
642
+
57 54 48 45 44 41 39 39
643
643
+
67 66 64 59 57 53
644
644
+
49 47 45 38 36 35 30
645
645
+
97 98 95 93 90 89 87 86
646
646
+
24 26 24 21 24
647
647
+
37 39 37 36 33 30 30
648
648
+
61 63 60 59 58 54
649
649
+
63 66 64 62 56
650
650
+
68 71 70 72 71 70
651
651
+
88 89 92 91 89 91
652
652
+
28 29 28 27 30 28 28
653
653
+
21 22 24 22 20 19 15
654
654
+
91 92 95 92 85
655
655
+
68 71 70 69 68 68 66 63
656
656
+
73 76 73 72 70 67 67 70
657
657
+
38 41 38 38 37 37
658
658
+
71 73 72 72 71 68 65 61
659
659
+
17 19 16 15 15 14 7
660
660
+
38 40 37 35 34 30 28 27
661
661
+
11 12 10 8 4 6
662
662
+
89 92 91 88 84 81 81
663
663
+
80 81 79 76 72 68
664
664
+
51 52 50 48 44 39
665
665
+
35 37 34 27 25
666
666
+
60 63 61 56 55 58
667
667
+
47 48 43 42 39 39
668
668
+
24 26 19 17 13
669
669
+
68 69 67 62 60 53
670
670
+
95 95 94 92 89
671
671
+
80 80 77 76 74 72 70 72
672
672
+
81 81 78 75 75
673
673
+
99 99 98 97 96 95 93 89
674
674
+
16 16 14 13 12 7
675
675
+
98 98 95 92 90 93 92
676
676
+
92 92 95 92 89 92
677
677
+
41 41 38 41 40 40
678
678
+
50 50 48 50 46
679
679
+
21 21 22 19 16 14 9
680
680
+
49 49 49 47 44 41 38
681
681
+
74 74 72 71 71 72
682
682
+
10 10 8 6 3 3 2 2
683
683
+
71 71 69 66 65 65 63 59
684
684
+
81 81 81 80 75
685
685
+
20 20 16 14 13
686
686
+
46 46 42 40 39 38 39
687
687
+
9 9 8 7 3 3
688
688
+
76 76 72 71 69 68 67 63
689
689
+
47 47 46 44 40 39 34
690
690
+
25 25 22 21 16 14
691
691
+
78 78 72 71 68 67 70
692
692
+
26 26 20 17 17
693
693
+
21 21 14 11 10 6
694
694
+
63 63 56 55 53 51 50 43
695
695
+
95 91 90 88 86 84 83 81
696
696
+
54 50 48 46 43 45
697
697
+
84 80 78 76 76
698
698
+
44 40 37 36 34 30
699
699
+
32 28 26 25 23 18
700
700
+
29 25 24 23 24 22 21 20
701
701
+
77 73 70 67 70 68 69
702
702
+
60 56 58 56 54 53 51 51
703
703
+
92 88 85 84 86 82
704
704
+
62 58 55 53 52 54 53 46
705
705
+
45 41 41 38 37 35
706
706
+
38 34 31 31 33
707
707
+
71 67 65 65 65
708
708
+
27 23 20 18 15 15 11
709
709
+
82 78 78 75 74 71 70 64
710
710
+
80 76 74 72 70 66 65
711
711
+
56 52 51 47 46 43 41 44
712
712
+
71 67 65 61 61
713
713
+
81 77 74 73 69 65
714
714
+
98 94 92 91 88 84 79
715
715
+
41 37 35 30 27
716
716
+
88 84 81 80 75 77
717
717
+
34 30 27 25 24 19 19
718
718
+
54 50 48 45 43 38 36 32
719
719
+
64 60 59 54 52 45
720
720
+
93 88 86 85 82
721
721
+
54 47 46 43 46
722
722
+
26 21 19 18 18
723
723
+
24 18 15 13 12 9 6 2
724
724
+
73 68 66 63 60 57 54 49
725
725
+
62 56 55 56 54 51 50
726
726
+
65 58 56 59 57 54 52 55
727
727
+
92 87 86 85 82 85 85
728
728
+
15 9 7 10 6
729
729
+
73 66 63 62 61 64 59
730
730
+
77 71 70 67 67 66 63
731
731
+
65 60 57 55 55 53 56
732
732
+
76 70 70 68 66 65 62 62
733
733
+
37 30 28 28 27 25 22 18
734
734
+
43 38 35 35 32 25
735
735
+
93 87 83 81 79 76
736
736
+
72 66 62 61 60 57 60
737
737
+
78 73 69 67 67
738
738
+
96 90 87 83 79
739
739
+
53 46 45 41 35
740
740
+
74 68 66 61 58
741
741
+
96 90 84 81 79 76 79
742
742
+
90 83 82 77 76 76
743
743
+
98 92 86 83 82 78
744
744
+
63 58 55 54 52 45 44 38
745
745
+
66 71 71 72 74 75 77
746
746
+
6 4 6 10 13 14 14
747
747
+
42 40 39 36 31 25
748
748
+
45 44 46 45 44 43 42 38
749
749
+
37 39 40 43 45 46 46
750
750
+
15 11 8 7 3 1 3
751
751
+
53 53 52 51 47
752
752
+
24 19 18 13 7
753
753
+
39 35 34 33 30 27 20
754
754
+
32 32 30 26 29
755
755
+
75 75 80 83 85 88 88
756
756
+
26 26 30 32 33 34 37
757
757
+
46 46 48 47 42
758
758
+
46 41 39 36 32 31 27
759
759
+
91 88 86 83 80 73
760
760
+
71 67 66 63 59
761
761
+
41 45 47 46 47 50 51
762
762
+
43 37 35 36 32
763
763
+
8 9 10 10 12 13 15 20
764
764
+
28 28 29 30 30 31 34 38
765
765
+
66 69 66 63 65 66
766
766
+
98 94 91 87 86 86
767
767
+
35 34 33 33 32
768
768
+
9 6 6 7 8 13
769
769
+
7 10 12 15 17 19 24 24
770
770
+
52 48 51 49 43
771
771
+
97 98 91 88 85 83 82 78
772
772
+
79 79 78 75 70 70
773
773
+
47 43 40 39 36 32 28
774
774
+
11 8 7 4 1 1
775
775
+
37 36 39 39 41 42 45 47
776
776
+
58 58 58 57 54 53 50 48
777
777
+
25 25 24 23 18
778
778
+
49 47 44 38 37 36 34 36
779
779
+
33 32 37 38 40 42 43
780
780
+
12 19 24 25 26
781
781
+
38 40 41 42 45 46 49 55
782
782
+
64 60 57 56 56 54 51 49
783
783
+
47 47 49 52 53 60 62 67
784
784
+
28 31 27 24 21 19 22
785
785
+
38 45 48 51 51 56
786
786
+
73 70 70 68 64
787
787
+
82 82 81 79 77 72 73
788
788
+
43 45 48 50 53 56 58 59
789
789
+
60 63 64 67 68 69 72
790
790
+
72 74 77 79 81 84
791
791
+
60 57 55 54 52 50 47
792
792
+
57 54 52 50 47 44
793
793
+
8 9 11 14 15
794
794
+
82 79 77 74 71 68 66
795
795
+
34 31 30 29 26 23 21
796
796
+
10 13 14 17 18 21 22 23
797
797
+
79 77 76 73 71 70
798
798
+
87 89 92 93 96 97
799
799
+
82 81 80 78 77 76 73 72
800
800
+
22 19 16 14 13
801
801
+
79 80 82 83 84 86 88
802
802
+
76 78 80 82 83
803
803
+
15 18 19 20 23 24 27
804
804
+
65 67 68 71 73 75 77 79
805
805
+
42 41 40 39 38
806
806
+
33 34 37 38 41 44 46
807
807
+
69 72 75 76 78 81
808
808
+
90 87 86 85 83
809
809
+
57 56 54 53 50 49 47 45
810
810
+
67 65 62 61 59 56 55
811
811
+
23 25 27 29 32 33
812
812
+
70 67 66 63 60 57 55
813
813
+
90 88 85 83 82 79 76 73
814
814
+
91 88 86 83 80 79 76 73
815
815
+
37 35 32 31 28 26 25 22
816
816
+
22 23 25 27 28 29 32
817
817
+
96 93 90 89 88
818
818
+
59 57 56 55 54
819
819
+
38 37 35 32 31
820
820
+
11 10 7 6 5 3
821
821
+
51 50 48 45 42 40 38 35
822
822
+
69 68 65 64 63 61 59 58
823
823
+
45 42 39 37 36 34 32
824
824
+
3 4 7 8 9
825
825
+
43 46 48 49 50 53 54 55
826
826
+
35 37 40 43 46
827
827
+
46 44 41 38 36 33
828
828
+
15 13 10 7 5 2
829
829
+
13 11 10 9 8 7 6
830
830
+
40 43 46 47 48 51
831
831
+
70 71 74 76 79
832
832
+
59 58 56 55 52 49
833
833
+
86 89 91 92 95 97 98
834
834
+
85 88 90 92 93
835
835
+
63 62 59 57 55 52 50
836
836
+
77 74 72 70 68 67
837
837
+
50 47 45 44 41 38 36
838
838
+
82 84 85 88 90 91 94 97
839
839
+
13 15 16 18 20 23 26 28
840
840
+
61 63 65 68 70 72 75 76
841
841
+
80 81 82 83 85
842
842
+
73 71 68 67 66 65 62
843
843
+
45 48 50 53 56 58 59 62
844
844
+
9 10 13 16 19 22 23 26
845
845
+
40 39 36 34 31 30 27 25
846
846
+
90 88 86 83 82 81
847
847
+
29 31 33 35 38 41 44
848
848
+
57 54 53 51 49 46 43
849
849
+
89 87 85 84 83 82
850
850
+
43 41 38 35 34 33 31 30
851
851
+
26 23 22 21 18 16 14
852
852
+
80 81 82 84 87
853
853
+
42 43 45 48 50 51 53 55
854
854
+
15 12 10 8 5 4
855
855
+
36 34 31 29 28 27
856
856
+
15 13 12 9 6 3
857
857
+
54 51 50 49 47
858
858
+
40 43 46 47 48 51 53
859
859
+
38 36 33 32 31 28 26 23
860
860
+
65 64 61 59 57 55
861
861
+
84 83 81 79 78 77
862
862
+
12 15 16 18 20
863
863
+
37 38 40 43 46 48 50
864
864
+
20 21 22 23 24 25 27
865
865
+
82 83 84 87 89
866
866
+
30 32 34 37 39 42 45 48
867
867
+
87 85 83 80 77 74
868
868
+
65 66 69 70 71
869
869
+
76 79 80 83 86 87
870
870
+
5 8 11 14 15
871
871
+
6 8 10 13 16 19
872
872
+
18 15 14 12 10
873
873
+
71 72 75 77 79 81 82 83
874
874
+
33 30 28 26 24 22
875
875
+
67 68 69 71 72 73
876
876
+
89 90 93 94 97
877
877
+
25 22 21 19 16 13
878
878
+
70 68 66 64 63 60
879
879
+
26 27 29 31 32 35 38
880
880
+
22 24 26 27 29 32 33 34
881
881
+
25 27 29 30 33 36 39
882
882
+
56 53 51 50 48 47 46
883
883
+
20 22 23 24 26 27 28
884
884
+
24 27 29 31 34
885
885
+
86 83 81 78 76 75 72 71
886
886
+
33 35 36 39 40 41 43
887
887
+
13 14 16 19 21 23
888
888
+
64 61 58 56 54 53 51 49
889
889
+
25 28 31 33 34 36
890
890
+
79 77 75 72 69 66 65
891
891
+
85 87 90 92 93 95 96
892
892
+
40 42 44 47 49 52 54
893
893
+
39 38 35 34 33 32 29
894
894
+
29 30 33 35 38 40 42
895
895
+
96 93 92 90 88 87 85
896
896
+
50 52 53 54 57 60
897
897
+
29 28 25 22 19 17
898
898
+
55 54 53 52 50 48
899
899
+
27 26 23 20 17 16
900
900
+
60 63 65 67 70 72 73 75
901
901
+
31 28 26 24 23 22
902
902
+
50 47 46 44 43
903
903
+
30 31 33 36 37 40 43
904
904
+
79 78 76 74 73 70 67
905
905
+
51 52 53 56 58 60 61
906
906
+
83 82 79 76 74 72 71 68
907
907
+
33 34 35 37 40 42 45
908
908
+
81 82 85 86 87 90
909
909
+
94 93 92 91 89 87 85 83
910
910
+
12 14 16 19 21 23
911
911
+
3 5 8 11 13 15 17
912
912
+
82 80 77 75 74
913
913
+
28 30 31 34 36 38
914
914
+
83 80 78 77 76 75 74 71
915
915
+
47 49 52 54 56 59 60
916
916
+
45 43 40 39 38 35 33 30
917
917
+
9 7 6 5 4 3
918
918
+
15 18 21 22 24 27
919
919
+
19 21 24 27 30 32 33
920
920
+
30 27 25 22 19
921
921
+
38 37 34 31 29 27 24 22
922
922
+
74 77 79 81 82 83 85 86
923
923
+
81 79 78 77 75 73
924
924
+
52 51 50 49 47 44 43
925
925
+
15 12 9 7 4 2 1
926
926
+
32 29 26 23 21 18 15
927
927
+
6 7 10 12 13 16
928
928
+
22 24 25 27 28 31 33
929
929
+
9 12 15 16 19 21 23
930
930
+
23 21 20 19 18 15 12 10
931
931
+
50 52 55 58 59
932
932
+
2 3 6 8 10 12 15 18
933
933
+
94 91 88 87 84
934
934
+
54 52 51 49 48 46 45
935
935
+
82 85 86 89 90
936
936
+
21 19 17 15 14 11
937
937
+
53 56 59 62 64
938
938
+
3 6 8 11 13 14
939
939
+
83 85 88 90 92
940
940
+
60 57 55 54 52 49 48
941
941
+
77 74 73 70 68 66 63
942
942
+
22 25 27 30 31 33 34
943
943
+
31 33 34 35 36 39
944
944
+
84 83 81 80 79 78
945
945
+
20 23 26 27 28 31 32 34
946
946
+
15 16 18 19 22 25 26
947
947
+
99 97 96 94 92 90
948
948
+
73 72 70 68 67 66 63 61
949
949
+
65 63 62 61 58 56 55 52
950
950
+
78 79 81 84 85 88 91 92
951
951
+
74 71 68 67 65
952
952
+
46 49 51 53 56 57
953
953
+
21 22 23 24 25 26
954
954
+
33 35 38 40 41 44 47
955
955
+
88 91 92 93 96
956
956
+
25 28 30 33 35
957
957
+
89 92 95 96 97
958
958
+
92 90 88 85 82 79 78 77
959
959
+
77 80 81 84 86 89 90 92
960
960
+
74 76 78 80 81 83 84
961
961
+
75 74 71 69 68 65
962
962
+
17 16 13 10 9
963
963
+
10 12 15 18 19
964
964
+
47 49 52 54 55
965
965
+
91 88 87 85 84
966
966
+
52 51 49 48 46 43 40 37
967
967
+
86 84 83 81 78 75
968
968
+
11 13 15 18 20 21 23 25
969
969
+
94 93 91 88 86 84 81
970
970
+
71 70 67 65 64
971
971
+
41 44 45 47 48
972
972
+
77 80 82 84 87
973
973
+
98 95 93 92 90 88
974
974
+
76 79 81 82 84 85 87 90
975
975
+
52 50 49 47 44 41 39
976
976
+
84 85 88 89 91 94 97 98
977
977
+
76 79 80 81 83 84 86 88
978
978
+
21 23 26 27 29
979
979
+
94 93 90 87 85 84 81
980
980
+
76 77 80 83 85 88 90 93
981
981
+
56 53 50 47 44 43 41 40
982
982
+
78 81 82 85 87
983
983
+
86 87 89 90 93
984
984
+
92 90 89 88 86 85
985
985
+
45 44 43 42 39
986
986
+
75 72 71 69 66 64 62
987
987
+
75 73 71 69 67 65 63 60
988
988
+
14 16 18 19 20 21
989
989
+
77 74 72 70 69 67
990
990
+
46 45 42 41 39 37 36 35
991
991
+
20 18 16 13 10 7 6 3
992
992
+
64 66 69 71 72 75
993
993
+
16 18 21 23 24 25 26 28
994
994
+
61 59 57 56 54 52 50
995
995
+
44 45 48 51 54 57 58 60
996
996
+
25 28 31 32 35
997
997
+
79 78 76 73 71 70
998
998
+
64 65 68 71 73 74
999
999
+
58 60 63 64 67
1000
1000
+
33 35 36 37 39 41
+56
-1
src/lib.rs
···
26
26
27
27
pub fn day1_part2(input: &str) -> String {
28
28
let (left, right) = day1_preprocess(input);
29
29
-
let similarity_score: u32 = left.into_iter()
29
29
+
let similarity_score: u32 = left
30
30
+
.into_iter()
30
31
.map(|left_location| {
31
32
left_location
32
33
* right
···
38
39
similarity_score.to_string()
39
40
}
40
41
42
42
+
pub mod day2 {
43
43
+
pub fn day2_part1(input: &str) -> String {
44
44
+
let reports: Vec<Vec<u32>> = input
45
45
+
.lines()
46
46
+
.map(|report| {
47
47
+
report
48
48
+
.split_ascii_whitespace()
49
49
+
.map(|level| level.parse().unwrap())
50
50
+
.collect()
51
51
+
})
52
52
+
.collect();
53
53
+
54
54
+
reports
55
55
+
.into_iter()
56
56
+
.filter(gradual)
57
57
+
.filter(monotonic)
58
58
+
.count()
59
59
+
.to_string()
60
60
+
}
61
61
+
62
62
+
fn gradual(report: &Vec<u32>) -> bool {
63
63
+
for i in 1..report.len() {
64
64
+
let diff = report[i].abs_diff(report[i - 1]);
65
65
+
if !(1..=3).contains(&diff) {
66
66
+
return false;
67
67
+
}
68
68
+
}
69
69
+
true
70
70
+
}
71
71
+
72
72
+
//fails if not gradual
73
73
+
fn monotonic(report: &Vec<u32>) -> bool {
74
74
+
let increasing = report[0] < report[1];
75
75
+
for i in 1..report.len() {
76
76
+
if increasing {
77
77
+
if report[i] < report[i - 1] {
78
78
+
return false;
79
79
+
}
80
80
+
} else if report[i] > report[i - 1] {
81
81
+
return false;
82
82
+
}
83
83
+
}
84
84
+
true
85
85
+
}
86
86
+
}
87
87
+
41
88
#[cfg(test)]
42
89
mod tests {
43
90
use super::*;
91
91
+
92
92
+
#[test]
93
93
+
fn day2_part1_test() {
94
94
+
let test_result = day2::day2_part1(include_str!("../input/day2.test.txt"));
95
95
+
assert_eq!(test_result, "2");
96
96
+
let result = day2::day2_part1(include_str!("../input/day2.txt"));
97
97
+
assert_eq!(result, "213");
98
98
+
}
44
99
45
100
#[test]
46
101
fn day1_part1_test() {