tangled
alpha
login
or
join now
nove.dev
/
aoc-2025
1
fork
atom
:)
1
fork
atom
overview
issues
pulls
pipelines
day8 part1
nove.dev
3 months ago
f4183f26
b3984d09
+1091
5 changed files
expand all
collapse all
unified
split
input
day8.test.txt
day8.txt
src
day8.rs
lib.rs
spatial.rs
+20
input/day8.test.txt
···
1
1
+
162,817,812
2
2
+
57,618,57
3
3
+
906,360,560
4
4
+
592,479,940
5
5
+
352,342,300
6
6
+
466,668,158
7
7
+
542,29,236
8
8
+
431,825,988
9
9
+
739,650,466
10
10
+
52,470,668
11
11
+
216,146,977
12
12
+
819,987,18
13
13
+
117,168,530
14
14
+
805,96,715
15
15
+
346,949,466
16
16
+
970,615,88
17
17
+
941,993,340
18
18
+
862,61,35
19
19
+
984,92,344
20
20
+
425,690,689
+1000
input/day8.txt
···
1
1
+
19811,63901,80424
2
2
+
56472,26644,32079
3
3
+
77528,24129,29189
4
4
+
53533,94958,85776
5
5
+
93168,69326,27460
6
6
+
25374,91449,95696
7
7
+
96129,76282,72430
8
8
+
80100,69230,78980
9
9
+
63046,75012,45443
10
10
+
48923,26202,95974
11
11
+
18380,35864,5685
12
12
+
10377,91999,83841
13
13
+
18215,31413,43273
14
14
+
69608,47324,31546
15
15
+
74388,93328,70320
16
16
+
7488,75918,69838
17
17
+
3402,16390,43595
18
18
+
61505,84673,4512
19
19
+
84158,58795,66886
20
20
+
85461,84839,45157
21
21
+
55232,17224,51398
22
22
+
35761,77776,24081
23
23
+
81650,1370,1703
24
24
+
11297,95673,39240
25
25
+
25368,3794,96381
26
26
+
31893,59581,83142
27
27
+
61121,5160,19889
28
28
+
4829,38017,11633
29
29
+
51020,6358,31830
30
30
+
90869,94064,99116
31
31
+
50255,99219,43018
32
32
+
7581,50550,29351
33
33
+
59667,39449,80754
34
34
+
11289,71781,52195
35
35
+
72898,75800,49342
36
36
+
14519,85836,78944
37
37
+
75078,35968,51444
38
38
+
9620,19765,71878
39
39
+
84052,94801,28054
40
40
+
72618,23498,58857
41
41
+
78616,81248,96697
42
42
+
2079,22191,39236
43
43
+
71386,21281,24930
44
44
+
9154,3724,73394
45
45
+
61950,91606,34692
46
46
+
66507,60009,2528
47
47
+
99431,76247,79160
48
48
+
89693,80180,16981
49
49
+
34456,33695,53921
50
50
+
24601,81277,79889
51
51
+
77036,22134,45737
52
52
+
42069,73464,71541
53
53
+
56434,65127,82549
54
54
+
59647,90286,18929
55
55
+
5834,6709,55511
56
56
+
56513,16545,20517
57
57
+
4325,20798,55038
58
58
+
83963,59491,40901
59
59
+
91600,60483,98350
60
60
+
64239,54023,19748
61
61
+
18934,17655,70517
62
62
+
29421,1715,50292
63
63
+
93589,70619,21682
64
64
+
54809,42502,22370
65
65
+
85716,90285,21129
66
66
+
19659,4752,89967
67
67
+
45183,31182,26351
68
68
+
56478,3706,75767
69
69
+
76841,54463,10838
70
70
+
14107,1129,60689
71
71
+
96635,17276,59040
72
72
+
30691,82119,42177
73
73
+
88318,72067,70875
74
74
+
91904,83010,61959
75
75
+
25074,25841,51517
76
76
+
21112,30406,18775
77
77
+
8324,21828,65391
78
78
+
73077,47615,1276
79
79
+
94230,24986,33586
80
80
+
15618,87608,81102
81
81
+
92050,71735,26685
82
82
+
89228,79626,30622
83
83
+
66366,17759,51633
84
84
+
85322,74490,57964
85
85
+
17237,73526,43846
86
86
+
5834,12316,14166
87
87
+
9278,45893,96833
88
88
+
33627,28165,83788
89
89
+
86926,22237,80297
90
90
+
31748,12903,88689
91
91
+
63755,79782,86198
92
92
+
38772,53598,12888
93
93
+
2169,26610,16688
94
94
+
2340,75351,19483
95
95
+
51160,87750,31219
96
96
+
90519,25360,20683
97
97
+
78041,43468,6310
98
98
+
93889,76633,67582
99
99
+
90185,80468,69643
100
100
+
82915,20204,41153
101
101
+
38677,32451,14620
102
102
+
76581,22670,99977
103
103
+
38232,44501,58232
104
104
+
25188,64312,83600
105
105
+
28522,70590,64923
106
106
+
79024,25865,90440
107
107
+
81150,26724,21842
108
108
+
8567,1245,50914
109
109
+
81807,29752,74627
110
110
+
61158,76395,64935
111
111
+
19158,2452,6107
112
112
+
22118,14241,16382
113
113
+
24726,7286,84878
114
114
+
46530,89315,49229
115
115
+
63489,53184,77743
116
116
+
41806,4473,56796
117
117
+
55834,21351,28613
118
118
+
76005,84959,26713
119
119
+
93292,23154,84373
120
120
+
37327,43296,40876
121
121
+
81256,39939,64161
122
122
+
19247,33012,27994
123
123
+
74387,107,11889
124
124
+
6245,88353,18422
125
125
+
29900,26067,13036
126
126
+
28913,13816,59311
127
127
+
8074,37782,34953
128
128
+
77584,10697,86255
129
129
+
58554,12913,69509
130
130
+
86099,12682,60061
131
131
+
30083,72465,29376
132
132
+
41934,1462,40706
133
133
+
81846,751,7414
134
134
+
59573,14000,28774
135
135
+
86161,80881,23697
136
136
+
94742,64212,86778
137
137
+
42849,13589,56059
138
138
+
60876,37327,7101
139
139
+
64427,33129,92490
140
140
+
97873,3249,14341
141
141
+
28014,5851,85764
142
142
+
2221,4054,90020
143
143
+
6589,43790,2416
144
144
+
13351,62945,79616
145
145
+
37219,48800,65731
146
146
+
63672,23104,82403
147
147
+
64932,52688,91813
148
148
+
76107,80904,33639
149
149
+
44158,473,88251
150
150
+
14708,81063,33847
151
151
+
32692,39861,9391
152
152
+
447,84114,10262
153
153
+
33278,11518,96968
154
154
+
56501,45291,9608
155
155
+
88389,17476,31993
156
156
+
50797,76742,46926
157
157
+
21861,99835,90288
158
158
+
3986,78555,41383
159
159
+
44875,44797,86262
160
160
+
11526,58218,38272
161
161
+
75687,38352,69458
162
162
+
88867,96578,11311
163
163
+
39355,85692,85713
164
164
+
15477,37111,72142
165
165
+
95935,9393,63283
166
166
+
69451,12959,61205
167
167
+
98520,5974,70909
168
168
+
6144,9418,30730
169
169
+
96258,44445,35265
170
170
+
92764,32300,59606
171
171
+
42983,79338,74537
172
172
+
25798,87291,47116
173
173
+
41304,65610,84929
174
174
+
86509,6137,66583
175
175
+
86384,4591,79527
176
176
+
20475,57453,34821
177
177
+
80819,92747,12513
178
178
+
9682,27456,92563
179
179
+
38688,6746,62361
180
180
+
3682,27195,80177
181
181
+
72692,63496,67642
182
182
+
62961,39138,76992
183
183
+
40826,3771,16666
184
184
+
12359,63605,34287
185
185
+
40332,9457,39359
186
186
+
34596,86486,7009
187
187
+
63022,27023,96152
188
188
+
51637,29842,22317
189
189
+
87240,35421,31220
190
190
+
20435,81925,39081
191
191
+
64008,24442,49259
192
192
+
56973,76393,17297
193
193
+
87911,96543,64428
194
194
+
23762,34754,78689
195
195
+
78907,93621,99438
196
196
+
93331,8732,97082
197
197
+
68707,64659,50231
198
198
+
82112,55191,57667
199
199
+
23944,58917,50002
200
200
+
68230,52727,15360
201
201
+
75459,15864,5228
202
202
+
34303,80546,35999
203
203
+
44028,49442,16674
204
204
+
8150,1119,98674
205
205
+
22471,70273,57876
206
206
+
86341,13749,47137
207
207
+
832,59477,56492
208
208
+
52365,97091,14470
209
209
+
17545,27204,18271
210
210
+
44182,68155,22931
211
211
+
93690,90582,21197
212
212
+
63501,92103,2420
213
213
+
32868,87558,86243
214
214
+
93528,96090,37782
215
215
+
11575,26144,5553
216
216
+
65882,75154,90491
217
217
+
25960,54961,33702
218
218
+
41043,46190,30747
219
219
+
42871,69787,35877
220
220
+
69061,79083,24878
221
221
+
28661,90268,67864
222
222
+
10779,61821,20133
223
223
+
80729,63970,87035
224
224
+
50138,18797,81089
225
225
+
96077,34756,13203
226
226
+
67768,50801,56084
227
227
+
88405,74067,73882
228
228
+
81910,47760,23240
229
229
+
8535,57152,15402
230
230
+
25317,37540,43266
231
231
+
63320,85760,18110
232
232
+
49312,47097,76115
233
233
+
25651,52362,92747
234
234
+
71254,50808,55842
235
235
+
15473,83688,87161
236
236
+
80693,99299,35536
237
237
+
16511,76084,35052
238
238
+
13533,12597,358
239
239
+
59031,1091,67689
240
240
+
87348,82217,87376
241
241
+
8157,32720,71537
242
242
+
19009,21003,16117
243
243
+
82501,1887,12274
244
244
+
459,33618,34333
245
245
+
67036,4148,14892
246
246
+
77817,68790,36382
247
247
+
88282,56775,61100
248
248
+
82705,40354,47087
249
249
+
26065,66579,4970
250
250
+
25567,994,33845
251
251
+
75522,36137,27159
252
252
+
77746,55935,97178
253
253
+
1234,61523,61927
254
254
+
57928,92637,98933
255
255
+
28480,77661,67505
256
256
+
17306,26135,82053
257
257
+
74596,76509,53005
258
258
+
67607,59955,25511
259
259
+
86805,12710,78195
260
260
+
97785,32852,86994
261
261
+
9415,30864,40984
262
262
+
67661,5280,23530
263
263
+
33460,99673,16779
264
264
+
48100,53787,17786
265
265
+
73587,22520,25582
266
266
+
62755,22493,27384
267
267
+
83205,16489,4617
268
268
+
62309,80142,84926
269
269
+
80462,62062,94863
270
270
+
20967,53365,99542
271
271
+
80746,89465,8697
272
272
+
55951,60358,83213
273
273
+
73994,30449,53979
274
274
+
42722,17591,36224
275
275
+
87190,67653,76864
276
276
+
7538,17296,26862
277
277
+
36019,44938,98314
278
278
+
34425,34460,2079
279
279
+
9664,6894,65255
280
280
+
67328,65001,12579
281
281
+
36386,93580,1066
282
282
+
66274,91220,58226
283
283
+
97935,75837,76921
284
284
+
97292,73543,62881
285
285
+
76688,9307,18417
286
286
+
25080,82552,98645
287
287
+
28701,87652,36807
288
288
+
59340,63999,76326
289
289
+
51435,49596,4379
290
290
+
91935,73656,87221
291
291
+
31099,50758,81931
292
292
+
95994,76695,86365
293
293
+
8559,43271,20825
294
294
+
64194,13170,47376
295
295
+
82719,4053,4458
296
296
+
68153,33715,17440
297
297
+
86979,70992,23758
298
298
+
63929,14943,20735
299
299
+
54059,96047,67620
300
300
+
90430,99558,66276
301
301
+
31334,86285,75149
302
302
+
98315,23414,95838
303
303
+
79699,1796,24744
304
304
+
64662,43057,23674
305
305
+
82642,27541,40005
306
306
+
58008,96149,44469
307
307
+
38429,70163,25068
308
308
+
77752,79050,62344
309
309
+
54237,53644,73334
310
310
+
9322,59901,66138
311
311
+
82643,9968,38143
312
312
+
39518,53305,29525
313
313
+
71315,84108,22607
314
314
+
86216,90227,72144
315
315
+
43523,64759,83295
316
316
+
70047,60319,8440
317
317
+
62587,83506,82453
318
318
+
54745,7148,73053
319
319
+
75112,80138,10295
320
320
+
52206,6301,14514
321
321
+
86949,86347,53019
322
322
+
71450,84192,18337
323
323
+
83241,26758,50971
324
324
+
83111,52273,14367
325
325
+
86555,66442,7734
326
326
+
8673,10344,67356
327
327
+
8575,28519,94069
328
328
+
45843,72014,46504
329
329
+
20214,60294,55324
330
330
+
73897,84286,7063
331
331
+
14497,35646,33159
332
332
+
78742,11879,60615
333
333
+
24094,20685,42857
334
334
+
11884,29808,26234
335
335
+
36322,32587,91732
336
336
+
10712,43415,10274
337
337
+
7426,9808,48324
338
338
+
81974,7483,78316
339
339
+
17783,42120,43640
340
340
+
15854,2400,44314
341
341
+
42417,13879,32784
342
342
+
37677,29537,26927
343
343
+
32160,70397,59430
344
344
+
95276,30298,62435
345
345
+
84031,38093,92161
346
346
+
70339,16302,48638
347
347
+
19925,78230,19721
348
348
+
36181,95485,77688
349
349
+
26613,4084,69309
350
350
+
86928,29344,38194
351
351
+
82438,86979,31105
352
352
+
13508,14424,64061
353
353
+
1544,46188,58559
354
354
+
76868,79413,9985
355
355
+
35308,62538,54772
356
356
+
65083,8589,42759
357
357
+
60122,79164,81502
358
358
+
42454,99015,47153
359
359
+
27150,27799,45663
360
360
+
81832,85798,61989
361
361
+
96410,72345,6569
362
362
+
59176,37863,13799
363
363
+
74992,46560,93891
364
364
+
47147,87623,67859
365
365
+
9760,14366,71917
366
366
+
38608,43679,6314
367
367
+
9957,94204,39848
368
368
+
37872,84341,18797
369
369
+
10728,31641,95460
370
370
+
59328,25972,84127
371
371
+
93198,80907,90161
372
372
+
59793,60153,12700
373
373
+
47878,43038,85124
374
374
+
37329,22291,37297
375
375
+
77925,50089,19756
376
376
+
46332,22443,29813
377
377
+
97970,94929,12935
378
378
+
32832,37115,34996
379
379
+
7499,21023,92879
380
380
+
56041,96573,29323
381
381
+
75934,44899,77626
382
382
+
46438,55682,63742
383
383
+
49590,42688,46298
384
384
+
85039,62072,13265
385
385
+
2152,10437,40310
386
386
+
84812,37534,32959
387
387
+
42831,43299,34940
388
388
+
79833,25833,6189
389
389
+
17425,77,87620
390
390
+
70035,17028,66357
391
391
+
44699,93506,64133
392
392
+
26071,65119,16840
393
393
+
75801,19788,16680
394
394
+
2464,16223,45866
395
395
+
10113,2621,4243
396
396
+
73995,58225,1984
397
397
+
23547,35431,79325
398
398
+
44188,55903,57790
399
399
+
40521,67812,69740
400
400
+
83261,27507,50374
401
401
+
1145,53212,1217
402
402
+
78452,15661,53331
403
403
+
37714,32003,23524
404
404
+
61960,70572,34404
405
405
+
82392,2203,59760
406
406
+
83885,87292,64240
407
407
+
88124,42935,52255
408
408
+
88136,46453,30331
409
409
+
99617,5929,66908
410
410
+
84854,16773,63241
411
411
+
28500,63982,24453
412
412
+
29764,8869,7270
413
413
+
41654,71044,35856
414
414
+
49340,78914,74173
415
415
+
87296,66814,50584
416
416
+
81358,55828,6930
417
417
+
57557,99385,89952
418
418
+
81573,52002,81896
419
419
+
16354,41837,85135
420
420
+
64625,60014,36716
421
421
+
45985,11829,96695
422
422
+
31230,94212,72499
423
423
+
81038,28808,52029
424
424
+
66299,97135,39447
425
425
+
60436,17058,26867
426
426
+
26821,92712,22921
427
427
+
44305,86415,5331
428
428
+
20582,37708,74086
429
429
+
53105,41334,69427
430
430
+
55361,94123,20787
431
431
+
89609,54698,11286
432
432
+
65174,72996,89210
433
433
+
14462,74925,96093
434
434
+
369,1423,12102
435
435
+
81348,91522,20747
436
436
+
80184,17963,19284
437
437
+
27628,72040,8065
438
438
+
17476,68412,70807
439
439
+
60083,87171,94145
440
440
+
46388,56309,13161
441
441
+
42631,41522,2442
442
442
+
52667,55436,51631
443
443
+
36975,37301,6713
444
444
+
64149,46822,73948
445
445
+
18327,79704,31893
446
446
+
78555,56935,9680
447
447
+
60191,21720,47622
448
448
+
54364,1402,63657
449
449
+
72531,61636,61182
450
450
+
54775,36458,47966
451
451
+
21183,36917,92307
452
452
+
8199,27034,98741
453
453
+
3155,26251,34581
454
454
+
79986,32596,30351
455
455
+
94937,35979,67438
456
456
+
70085,23486,32284
457
457
+
85225,61234,93929
458
458
+
45241,40635,82602
459
459
+
33396,67124,98715
460
460
+
77909,71316,13352
461
461
+
36830,27736,36406
462
462
+
76321,51084,895
463
463
+
71062,77989,74926
464
464
+
61924,79668,16949
465
465
+
68462,19140,80662
466
466
+
50596,95202,14557
467
467
+
46215,77912,30128
468
468
+
28497,87737,11515
469
469
+
58169,44744,50107
470
470
+
31137,27619,70290
471
471
+
77881,65634,28401
472
472
+
52061,98481,42430
473
473
+
13293,83245,61313
474
474
+
96139,71515,47167
475
475
+
79353,30430,81936
476
476
+
36813,37397,56422
477
477
+
8570,94518,75911
478
478
+
78594,78038,96861
479
479
+
93356,95735,78898
480
480
+
23903,65596,24789
481
481
+
10807,85711,86308
482
482
+
22923,59760,70072
483
483
+
35343,75779,89252
484
484
+
37668,76222,74313
485
485
+
79178,40537,33196
486
486
+
19844,60421,18493
487
487
+
61456,66856,36942
488
488
+
30357,80858,39689
489
489
+
45301,72648,18283
490
490
+
85606,17987,99814
491
491
+
91773,60010,18981
492
492
+
85713,61096,75890
493
493
+
42256,5887,74972
494
494
+
99272,74302,994
495
495
+
20979,84769,45589
496
496
+
31699,56218,33676
497
497
+
41559,9163,86890
498
498
+
23892,27334,89475
499
499
+
14822,22776,10715
500
500
+
37667,65920,6351
501
501
+
32112,81968,17075
502
502
+
90843,17172,2673
503
503
+
96916,43900,55505
504
504
+
94957,25352,5827
505
505
+
7289,50474,95225
506
506
+
77665,76450,59127
507
507
+
75742,48626,95646
508
508
+
7591,15387,55440
509
509
+
22733,63473,46411
510
510
+
19433,62499,79181
511
511
+
93309,61722,70184
512
512
+
24379,83969,84973
513
513
+
16874,83921,69806
514
514
+
52840,61098,14578
515
515
+
15737,30790,68500
516
516
+
90187,3322,48832
517
517
+
2830,34450,52062
518
518
+
46035,9997,23146
519
519
+
51242,86174,73660
520
520
+
64461,74769,34791
521
521
+
9710,45256,36435
522
522
+
41047,19773,72003
523
523
+
15294,17535,55142
524
524
+
73757,18431,91478
525
525
+
74522,58511,49255
526
526
+
59123,67071,87838
527
527
+
57192,98568,69179
528
528
+
23435,72939,35565
529
529
+
25258,95498,91417
530
530
+
51888,32939,90519
531
531
+
81589,30845,8108
532
532
+
75496,53112,42267
533
533
+
99240,88793,39410
534
534
+
37175,50634,83343
535
535
+
5426,96323,45274
536
536
+
5771,16845,17342
537
537
+
67815,11937,21756
538
538
+
31448,92069,33611
539
539
+
71929,76152,73690
540
540
+
27221,20673,67371
541
541
+
83662,10295,69459
542
542
+
79530,50485,57181
543
543
+
33456,61011,45570
544
544
+
17392,64200,54390
545
545
+
86609,98501,8821
546
546
+
15009,95179,33540
547
547
+
19379,52923,47142
548
548
+
39624,58537,20536
549
549
+
44222,69386,79271
550
550
+
61775,97795,50366
551
551
+
16739,36539,75572
552
552
+
71437,56783,27916
553
553
+
95672,47904,20468
554
554
+
49879,2124,70882
555
555
+
75390,93535,98190
556
556
+
64921,24227,69903
557
557
+
78184,72258,81657
558
558
+
28708,44193,99168
559
559
+
452,79372,30788
560
560
+
37556,59092,16594
561
561
+
76882,42902,18506
562
562
+
76781,53697,30647
563
563
+
18629,22726,74081
564
564
+
12963,69962,18766
565
565
+
35016,31989,69764
566
566
+
83196,60514,19101
567
567
+
12077,96106,73134
568
568
+
93278,47440,69028
569
569
+
86532,89374,81139
570
570
+
97986,26301,88467
571
571
+
53983,62742,59081
572
572
+
20375,35156,2600
573
573
+
36730,80019,90622
574
574
+
26781,57491,51462
575
575
+
51607,3233,55344
576
576
+
86527,60362,70018
577
577
+
32612,63361,50738
578
578
+
95878,57913,8932
579
579
+
50567,83830,77679
580
580
+
14610,13478,80070
581
581
+
83756,88629,86663
582
582
+
75713,48667,57674
583
583
+
55820,90569,73614
584
584
+
63376,31891,14912
585
585
+
89521,60460,29381
586
586
+
79863,38559,51035
587
587
+
51468,91332,30691
588
588
+
24637,31579,22339
589
589
+
87532,83514,68636
590
590
+
28952,32941,36059
591
591
+
38303,64977,77598
592
592
+
33647,14736,87999
593
593
+
42735,4549,16941
594
594
+
6566,27990,26298
595
595
+
15820,36391,10265
596
596
+
50379,38288,47656
597
597
+
56743,1648,64257
598
598
+
70197,96759,73037
599
599
+
82134,16893,56994
600
600
+
3389,95349,15379
601
601
+
63765,94194,23204
602
602
+
45841,28949,97461
603
603
+
26217,48585,93864
604
604
+
1266,91667,34045
605
605
+
23078,88036,17024
606
606
+
33499,39651,30563
607
607
+
25554,18842,30273
608
608
+
86546,83059,81037
609
609
+
35753,19754,71205
610
610
+
40311,75499,6921
611
611
+
20317,6652,37344
612
612
+
28182,42272,70728
613
613
+
32903,5540,6860
614
614
+
76036,67776,70592
615
615
+
17783,60076,82378
616
616
+
57975,7646,1752
617
617
+
67874,34892,45471
618
618
+
34346,70294,66266
619
619
+
41414,77576,39882
620
620
+
57801,17807,71798
621
621
+
20349,20211,64823
622
622
+
14860,70205,13593
623
623
+
5070,73845,64482
624
624
+
94131,91239,75691
625
625
+
96784,30610,62319
626
626
+
41809,28299,46550
627
627
+
89409,81409,59341
628
628
+
87820,75287,68617
629
629
+
10649,4404,696
630
630
+
11784,33700,59413
631
631
+
73944,55344,42792
632
632
+
55697,72654,157
633
633
+
5016,69277,21926
634
634
+
66508,99033,44917
635
635
+
31425,72862,78962
636
636
+
89179,85001,45188
637
637
+
57726,64047,5739
638
638
+
77496,64820,64560
639
639
+
92417,19239,79246
640
640
+
58700,71320,93844
641
641
+
89859,80072,31222
642
642
+
43318,75829,23661
643
643
+
6017,23792,20575
644
644
+
83362,55569,37877
645
645
+
97083,45044,33220
646
646
+
12065,73003,70043
647
647
+
50518,5948,44557
648
648
+
57309,83963,58344
649
649
+
91788,95409,62983
650
650
+
31292,58901,22534
651
651
+
26532,43129,65580
652
652
+
19182,1280,87351
653
653
+
93970,6620,96527
654
654
+
4658,25023,8400
655
655
+
9077,15456,3646
656
656
+
22554,9994,72248
657
657
+
38789,20563,39619
658
658
+
62867,19184,34319
659
659
+
57598,82637,82994
660
660
+
64212,91682,6492
661
661
+
87608,66783,58765
662
662
+
80198,9816,87378
663
663
+
20054,26469,74941
664
664
+
82246,75648,160
665
665
+
4074,48052,73658
666
666
+
51106,9044,13290
667
667
+
74926,26678,18703
668
668
+
4993,53210,50968
669
669
+
82986,47086,48291
670
670
+
32100,28586,9809
671
671
+
91129,30486,25870
672
672
+
22497,13350,95359
673
673
+
14009,65738,21491
674
674
+
78501,71773,72361
675
675
+
41810,66661,25736
676
676
+
47075,94382,56069
677
677
+
50279,40907,51427
678
678
+
39977,50320,10036
679
679
+
34198,68577,63662
680
680
+
84518,97980,21557
681
681
+
56207,44939,96264
682
682
+
60108,61364,92726
683
683
+
36300,77356,81287
684
684
+
30075,80166,75056
685
685
+
89056,79654,81981
686
686
+
68136,59755,53159
687
687
+
14842,66543,97137
688
688
+
65814,44988,42054
689
689
+
88989,25007,77870
690
690
+
43726,16632,42865
691
691
+
86466,43695,5595
692
692
+
21836,49422,40865
693
693
+
49227,89854,70959
694
694
+
15797,73857,57588
695
695
+
29875,59816,72598
696
696
+
88454,47592,15337
697
697
+
89545,5687,69400
698
698
+
84613,32176,66828
699
699
+
95869,39150,67340
700
700
+
60875,67660,91914
701
701
+
76146,87023,14388
702
702
+
55959,11135,56069
703
703
+
2249,84266,91780
704
704
+
79180,14086,71440
705
705
+
63001,26614,35620
706
706
+
54539,18037,17309
707
707
+
1558,10867,88872
708
708
+
44899,31996,49311
709
709
+
41929,26066,2537
710
710
+
89941,86765,31971
711
711
+
88092,36628,34299
712
712
+
5682,80787,58527
713
713
+
96888,89602,44511
714
714
+
99228,44384,63071
715
715
+
53497,44337,52002
716
716
+
86233,98233,68229
717
717
+
51975,41192,90639
718
718
+
93997,31147,73228
719
719
+
80920,84194,70981
720
720
+
45797,12863,7480
721
721
+
70167,4134,2559
722
722
+
22641,8865,79038
723
723
+
70110,88521,38429
724
724
+
78889,85491,49229
725
725
+
12666,2698,91505
726
726
+
88461,12686,37429
727
727
+
30000,76265,74240
728
728
+
70372,45926,3826
729
729
+
66297,82641,59310
730
730
+
76580,24861,87559
731
731
+
42284,99010,44791
732
732
+
21376,89287,73468
733
733
+
22462,81305,28663
734
734
+
64619,17244,73971
735
735
+
56073,66105,23581
736
736
+
87024,20292,89228
737
737
+
77032,17755,13489
738
738
+
68668,36461,89034
739
739
+
98003,81337,38405
740
740
+
71767,83532,68907
741
741
+
93686,5125,61060
742
742
+
85537,42959,43046
743
743
+
67957,80517,32053
744
744
+
17729,38600,81536
745
745
+
70491,20300,99081
746
746
+
99246,53897,33878
747
747
+
39524,93580,17510
748
748
+
6972,3673,55131
749
749
+
15805,31783,86457
750
750
+
34109,98739,93119
751
751
+
70193,55571,8171
752
752
+
5887,67593,89966
753
753
+
11019,35736,97762
754
754
+
32879,57994,16752
755
755
+
61376,75055,48899
756
756
+
30930,29484,84253
757
757
+
64877,80684,31511
758
758
+
52705,13471,72054
759
759
+
51243,99505,19217
760
760
+
82483,82815,25259
761
761
+
77931,32937,94215
762
762
+
48860,133,35086
763
763
+
14640,73229,73489
764
764
+
75961,39570,20897
765
765
+
27338,15796,7896
766
766
+
1895,37430,61052
767
767
+
87232,58934,45914
768
768
+
21524,23498,17095
769
769
+
43125,55902,93575
770
770
+
80969,26254,93398
771
771
+
59632,17165,45845
772
772
+
46762,76154,73936
773
773
+
13867,41935,88868
774
774
+
65682,63921,64317
775
775
+
62144,60101,57769
776
776
+
17838,91167,73333
777
777
+
98363,59355,5771
778
778
+
82492,12654,1751
779
779
+
202,15862,41316
780
780
+
61397,47059,45142
781
781
+
33400,93137,88393
782
782
+
96214,44075,39775
783
783
+
42896,60476,19098
784
784
+
29291,1825,33872
785
785
+
19562,57186,86051
786
786
+
11559,58307,51590
787
787
+
7188,94277,37622
788
788
+
1444,73415,9850
789
789
+
62875,31855,38456
790
790
+
57024,64198,92533
791
791
+
44396,46599,57851
792
792
+
24499,16974,49274
793
793
+
79176,34449,47985
794
794
+
84121,92757,15373
795
795
+
32844,64343,44475
796
796
+
44277,12758,96990
797
797
+
40415,83995,17773
798
798
+
44477,83897,44587
799
799
+
87874,52552,53469
800
800
+
82280,9909,31546
801
801
+
79356,49464,95175
802
802
+
15218,55924,59929
803
803
+
9819,79704,84250
804
804
+
9338,82517,69606
805
805
+
57233,34324,53315
806
806
+
80048,4077,5287
807
807
+
96745,83896,89879
808
808
+
11087,81720,68852
809
809
+
96849,99593,1034
810
810
+
76625,87880,10339
811
811
+
72990,78200,1409
812
812
+
56058,45796,7719
813
813
+
43278,43316,8210
814
814
+
64985,87647,434
815
815
+
14108,87099,77947
816
816
+
66772,3555,10295
817
817
+
87400,73824,92134
818
818
+
73474,88228,76642
819
819
+
13497,54640,36351
820
820
+
4043,12369,46995
821
821
+
95132,1331,2069
822
822
+
93277,15101,98818
823
823
+
12397,61103,38512
824
824
+
10212,13631,45995
825
825
+
86062,41166,8039
826
826
+
58661,66625,52204
827
827
+
24474,17045,55761
828
828
+
85101,42605,76653
829
829
+
36653,30252,27214
830
830
+
841,29789,894
831
831
+
18750,79154,42505
832
832
+
43962,10656,30900
833
833
+
3813,76470,36439
834
834
+
93856,66682,99229
835
835
+
87423,57120,32218
836
836
+
29290,15766,91578
837
837
+
96475,70508,34619
838
838
+
2200,29714,33937
839
839
+
79075,40479,53800
840
840
+
41299,16400,91855
841
841
+
90648,24661,3360
842
842
+
87089,62732,41525
843
843
+
51608,75471,55763
844
844
+
89216,30888,64851
845
845
+
19103,46634,74429
846
846
+
43723,7451,32477
847
847
+
2595,11567,9371
848
848
+
25642,36860,66095
849
849
+
49086,82439,93386
850
850
+
65515,88795,66470
851
851
+
64903,57499,26666
852
852
+
68286,73158,50267
853
853
+
26246,57150,15395
854
854
+
98948,59998,34092
855
855
+
43920,73144,2976
856
856
+
68935,46651,55010
857
857
+
75188,19536,71437
858
858
+
94428,34063,92570
859
859
+
52881,15010,53734
860
860
+
20995,96960,25093
861
861
+
39618,33148,10332
862
862
+
78252,35233,47084
863
863
+
20468,42163,5477
864
864
+
86128,77267,50139
865
865
+
75143,18182,2299
866
866
+
11097,63366,32588
867
867
+
18921,58748,60703
868
868
+
90414,54382,5076
869
869
+
23796,92996,16943
870
870
+
84729,17895,81177
871
871
+
69686,2205,76228
872
872
+
95769,14384,21319
873
873
+
252,35451,69089
874
874
+
23340,30613,49295
875
875
+
41858,45789,36354
876
876
+
33,28577,45663
877
877
+
11889,54351,68305
878
878
+
88873,26983,66233
879
879
+
86471,90079,34873
880
880
+
57541,20638,34455
881
881
+
25244,695,20334
882
882
+
34134,80714,25794
883
883
+
20569,68280,3322
884
884
+
8667,26273,46395
885
885
+
68133,17007,94043
886
886
+
21487,8103,64437
887
887
+
29560,73097,62716
888
888
+
32523,18955,22396
889
889
+
34558,99550,4781
890
890
+
33343,95788,63429
891
891
+
90191,78358,541
892
892
+
61035,86186,95253
893
893
+
70726,84551,97581
894
894
+
58340,89588,39079
895
895
+
4479,12219,19026
896
896
+
7531,31924,36487
897
897
+
95754,31075,77517
898
898
+
57045,87096,92359
899
899
+
10026,83776,89447
900
900
+
27272,86804,11705
901
901
+
92211,93388,60345
902
902
+
73961,87102,53998
903
903
+
83075,34175,34496
904
904
+
12549,71811,20990
905
905
+
7436,85903,70014
906
906
+
34450,70,97461
907
907
+
25276,8824,97522
908
908
+
91088,33617,74285
909
909
+
8693,8968,62657
910
910
+
11684,87690,68977
911
911
+
78863,53669,21973
912
912
+
74897,91362,54245
913
913
+
61668,2006,28255
914
914
+
43804,54180,4244
915
915
+
68033,63538,37548
916
916
+
24848,40148,99039
917
917
+
39485,77454,77755
918
918
+
12037,46195,47449
919
919
+
94249,38595,57871
920
920
+
56835,62808,15824
921
921
+
36748,44322,97234
922
922
+
74449,59448,27874
923
923
+
92769,5328,29031
924
924
+
71952,5787,60374
925
925
+
51500,65137,57036
926
926
+
75126,38563,58017
927
927
+
91605,83071,85330
928
928
+
95142,74242,61389
929
929
+
48538,81258,20560
930
930
+
42894,72720,815
931
931
+
35268,91261,72793
932
932
+
46686,55700,41021
933
933
+
87659,28342,53570
934
934
+
75844,33667,57794
935
935
+
96291,93113,88151
936
936
+
36075,79308,38704
937
937
+
29725,13612,82191
938
938
+
75856,51,95679
939
939
+
76888,88151,37029
940
940
+
86875,93273,75313
941
941
+
91069,8123,51210
942
942
+
38764,51477,57409
943
943
+
16757,76747,69360
944
944
+
67060,40243,38330
945
945
+
9124,19472,61055
946
946
+
25475,39383,80548
947
947
+
68662,45737,50093
948
948
+
10605,20544,58159
949
949
+
89687,31428,85417
950
950
+
34706,4824,26547
951
951
+
31692,11892,72989
952
952
+
35017,72971,66558
953
953
+
52376,36785,54438
954
954
+
77199,36841,78787
955
955
+
63226,40307,19604
956
956
+
27918,52813,89106
957
957
+
543,12459,97260
958
958
+
22721,92653,77226
959
959
+
22047,32420,77473
960
960
+
50107,23096,1266
961
961
+
89689,10137,1445
962
962
+
99626,5426,67539
963
963
+
45135,19027,72283
964
964
+
91663,57343,38515
965
965
+
16231,63012,98967
966
966
+
24384,74762,3138
967
967
+
75068,1121,32120
968
968
+
92923,61715,17282
969
969
+
31189,44207,1389
970
970
+
20868,89128,58615
971
971
+
82536,78750,7953
972
972
+
53165,92905,5378
973
973
+
6454,87128,91320
974
974
+
72058,92250,16673
975
975
+
62458,21836,79821
976
976
+
81067,1638,21535
977
977
+
56324,80191,58416
978
978
+
5039,17656,1501
979
979
+
49871,45912,84662
980
980
+
54569,26670,96845
981
981
+
57648,52234,41510
982
982
+
34468,46762,63901
983
983
+
73184,95006,98350
984
984
+
53794,7658,6271
985
985
+
21564,95139,66193
986
986
+
49201,55477,31114
987
987
+
10108,85551,31370
988
988
+
90862,91400,92611
989
989
+
5826,90177,71681
990
990
+
59477,22810,73219
991
991
+
1031,38454,13095
992
992
+
25784,50057,58569
993
993
+
40353,99246,78101
994
994
+
17937,14538,73868
995
995
+
25614,71008,36169
996
996
+
33379,9819,60131
997
997
+
5475,25938,4283
998
998
+
40321,63581,53244
999
999
+
93504,49061,94176
1000
1000
+
36875,39683,99617
+33
src/day8.rs
···
1
1
+
use itertools::Itertools;
2
2
+
3
3
+
use crate::spatial::Point3D;
4
4
+
5
5
+
pub fn day8_part1(input: &str) -> String {
6
6
+
let boxes = parse(input);
7
7
+
let mut pairs = boxes
8
8
+
.iter()
9
9
+
.combinations(2)
10
10
+
.map(|pair| (pair[0], pair[1]))
11
11
+
.map(|(left, right)| (left.euclidean_distance(right), left, right))
12
12
+
.collect_vec();
13
13
+
pairs.sort_by(|(ld, _, _), (rd, _, _)| ld.partial_cmp(rd).unwrap());
14
14
+
pairs.truncate(1000);
15
15
+
16
16
+
pairs.len().to_string()
17
17
+
}
18
18
+
pub fn day8_part2(input: &str) -> String {
19
19
+
todo!()
20
20
+
}
21
21
+
22
22
+
fn parse(input: &str) -> Vec<Point3D> {
23
23
+
input
24
24
+
.lines()
25
25
+
.map(|line| {
26
26
+
line.split(',')
27
27
+
.map(|coord| coord.parse::<usize>().unwrap())
28
28
+
.collect_tuple()
29
29
+
.unwrap()
30
30
+
})
31
31
+
.map(|(x, y, z)| Point3D { x, y, z })
32
32
+
.collect()
33
33
+
}
+16
src/lib.rs
···
120
120
pub mod day5;
121
121
pub mod day6;
122
122
pub mod day7;
123
123
+
pub mod day8;
123
124
mod spatial;
124
125
125
126
#[cfg(test)]
126
127
mod tests {
127
128
use super::*;
129
129
+
130
130
+
#[test]
131
131
+
fn day8_part1_test() {
132
132
+
// let test_result = day8::day8_part1(include_str!("../input/day8.test.txt"));
133
133
+
// assert_eq!(test_result, "40");
134
134
+
let result = day8::day8_part1(include_str!("../input/day8.txt"));
135
135
+
assert_eq!(result, "1490");
136
136
+
}
137
137
+
// #[test]
138
138
+
// fn day8_part2_test() {
139
139
+
// let test_result = day8::day8_part2(include_str!("../input/day8.test.txt"));
140
140
+
// assert_eq!(test_result, "40");
141
141
+
// // let result = day8::day8_part2(include_str!("../input/day8.txt"));
142
142
+
// // assert_eq!(result, "3806264447357");
143
143
+
// }
128
144
129
145
#[test]
130
146
fn day7_part1_test() {
+22
src/spatial.rs
···
1
1
+
use std::collections::BTreeSet;
2
2
+
1
3
use itertools::Itertools;
2
4
3
5
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
4
6
pub struct Point {
5
7
pub row: usize,
6
8
pub col: usize,
9
9
+
}
10
10
+
11
11
+
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
12
12
+
pub struct Point3D {
13
13
+
pub x: usize,
14
14
+
pub y: usize,
15
15
+
pub z: usize,
16
16
+
}
17
17
+
18
18
+
impl Point3D {
19
19
+
pub fn euclidean_distance(&self, other: &Self) -> f64 {
20
20
+
(((self.x as isize - other.x as isize).abs().pow(2)
21
21
+
+ (self.y as isize - other.y as isize).abs().pow(2)
22
22
+
+ (self.z as isize - other.z as isize).abs().pow(2)) as f64)
23
23
+
.sqrt()
24
24
+
}
25
25
+
}
26
26
+
27
27
+
fn connected_components(pairs: &[(Point3D, Point3D)]) -> BTreeSet<BTreeSet<Point>> {
28
28
+
todo!()
7
29
}
8
30
9
31
pub fn all_coords(width: usize, height: usize) -> impl Iterator<Item = Point> {