tangled
alpha
login
or
join now
nove.dev
/
aoc-2025
1
fork
atom
:)
1
fork
atom
overview
issues
pulls
pipelines
day5 part1
nove.dev
3 months ago
1a27538d
a5541f19
+1232
4 changed files
expand all
collapse all
unified
split
input
day5.test.txt
day5.txt
src
day5.rs
lib.rs
+11
input/day5.test.txt
···
1
1
+
3-5
2
2
+
10-14
3
3
+
16-20
4
4
+
12-18
5
5
+
6
6
+
1
7
7
+
5
8
8
+
8
9
9
+
11
10
10
+
17
11
11
+
32
+1177
input/day5.txt
···
1
1
+
79225938624159-79772919561224
2
2
+
445994870830027-449475105431654
3
3
+
485052355932434-489723347156062
4
4
+
252033180861215-252511696149831
5
5
+
455027942886900-455027942886900
6
6
+
390923392404945-391369358684202
7
7
+
111589773767805-118743888275326
8
8
+
440390990825652-440663571836987
9
9
+
436713593570041-437153387734809
10
10
+
71552614839182-72248109759130
11
11
+
75562993535351-75777039646971
12
12
+
202271210408543-206274751599943
13
13
+
174836883092812-180073977980028
14
14
+
516752870130348-518587513963800
15
15
+
223078965120104-228545028738318
16
16
+
438996036819994-439417909158596
17
17
+
75562993535351-76365170391821
18
18
+
151193210118987-157105755166663
19
19
+
79772919561224-79981244100552
20
20
+
96759532330786-98579687302472
21
21
+
78755790555282-79225938624159
22
22
+
413395659982149-413395659982149
23
23
+
252961912959367-253636969000871
24
24
+
440145272934342-440390990825652
25
25
+
292632881149683-297095102370780
26
26
+
5439446452415-8476082394860
27
27
+
27740466262204-29785184292050
28
28
+
91308964822097-96759532330784
29
29
+
352924241057590-354499519431240
30
30
+
260138981910960-260557265444664
31
31
+
259961539016687-260138981910960
32
32
+
373590767911263-376365600546733
33
33
+
514274082785193-516010739140991
34
34
+
534016913115199-540445990696521
35
35
+
438477741007747-438625201619520
36
36
+
252705478080896-252961912959367
37
37
+
81529807435668-87525980647065
38
38
+
274903492707570-277690616085252
39
39
+
357524899188118-358875034429848
40
40
+
25055251756195-26704088596914
41
41
+
540445990696522-540445990696522
42
42
+
126641042611452-126641042611452
43
43
+
363389282691740-370081426037674
44
44
+
223078965120103-223078965120103
45
45
+
358643980680397-359836354030584
46
46
+
273251196412736-276300727112958
47
47
+
360304931887093-361532980687154
48
48
+
54611041342437-57224634168756
49
49
+
422927139058460-427888401588498
50
50
+
555942054595955-559018047524858
51
51
+
33541309838058-39074263190979
52
52
+
356622813179758-358182833915101
53
53
+
260138981910960-260802671527207
54
54
+
390247982188757-390632116757234
55
55
+
276570274308979-279441496270153
56
56
+
132373993125976-136350174377622
57
57
+
432689256585724-433045082549595
58
58
+
515282338380611-517291623214868
59
59
+
384960608828704-385471130381718
60
60
+
141288346154379-148667235181744
61
61
+
193715411452155-198037526958568
62
62
+
442730917008354-450277066519305
63
63
+
265694812858929-270838596219136
64
64
+
544453658310498-552004299202057
65
65
+
455027942886900-458367437363550
66
66
+
390923392404945-391369358684202
67
67
+
441128601849783-441662134512868
68
68
+
478420204129418-481158065753227
69
69
+
383977256209833-384405105282285
70
70
+
304641651395981-310600767741398
71
71
+
364944982731537-367415275977225
72
72
+
383037049573035-383977256209833
73
73
+
468311775561538-470995770448391
74
74
+
81529807435668-86141768578819
75
75
+
76580679130959-77183103581819
76
76
+
72468870174805-73349647866598
77
77
+
51945266971870-59698236253713
78
78
+
41269089149346-41269089149346
79
79
+
26388359454758-28538522238248
80
80
+
72468870174805-73027431091794
81
81
+
396168867879203-399887823491991
82
82
+
518130406480785-520094113970530
83
83
+
391248350131220-391369358684202
84
84
+
151193210118987-159938826124943
85
85
+
302239372542749-307326937043456
86
86
+
463373574942020-470995770448391
87
87
+
271693369738429-274140416172999
88
88
+
359294204057144-360833032432674
89
89
+
355737283619812-357058463446714
90
90
+
385809253734370-386672304725548
91
91
+
213727775852102-216828311641185
92
92
+
512913756301730-514946536337279
93
93
+
485052355932434-489723347156062
94
94
+
122301489626806-126641042611452
95
95
+
61073279838793-64601522636200
96
96
+
289478169879820-289478169879820
97
97
+
213727775852102-216828311641185
98
98
+
107738463920939-107738463920939
99
99
+
340684274251418-340684274251418
100
100
+
323696253958580-330911444533497
101
101
+
434238684817903-434751255465049
102
102
+
285893461204740-289478169879820
103
103
+
387603542541111-388094634062728
104
104
+
387315520638657-388094634062728
105
105
+
544453658310498-547225900584125
106
106
+
391248350131220-391369358684202
107
107
+
14138223877747-17205751061635
108
108
+
520401561838165-522180393786716
109
109
+
257292001338432-257999014714194
110
110
+
384405105282285-384646125590025
111
111
+
297095102370782-299108673243336
112
112
+
312625254613715-320977475810592
113
113
+
242995291745373-242995291745373
114
114
+
232596112211004-238889664996400
115
115
+
346289004667560-347859257126227
116
116
+
494319600739047-494319600739047
117
117
+
71730906496904-72468870174805
118
118
+
354937175875507-356255684938529
119
119
+
525917757855721-531722418711508
120
120
+
405444920918505-407642614822359
121
121
+
387888949860732-388363898955773
122
122
+
387888949860732-388094634062728
123
123
+
433045082549595-433458654165955
124
124
+
76365170391821-76850399707072
125
125
+
254985947817624-255772314079756
126
126
+
168508801060493-168508801060493
127
127
+
474930746035871-478420204129417
128
128
+
493548713557-8476082394860
129
129
+
559018047524858-559018047524858
130
130
+
393195998519347-396168867879202
131
131
+
335553280391128-340684274251417
132
132
+
187819512743212-187819512743212
133
133
+
102284928962805-107738463920938
134
134
+
242995291745373-250482497824749
135
135
+
254743374951296-254985947817624
136
136
+
388947549331737-389441820942312
137
137
+
373590767911263-381247681046110
138
138
+
386165402242963-386961990037722
139
139
+
173144135686138-174836883092811
140
140
+
184466486183684-187819512743212
141
141
+
524707566196329-529773882373859
142
142
+
346289004667559-346289004667559
143
143
+
413395659982149-420792440268852
144
144
+
262801163197626-268539565121377
145
145
+
134438472735028-140205385097386
146
146
+
21973678985786-24167340388309
147
147
+
504675185749547-508167792132876
148
148
+
440869627037067-441531656440380
149
149
+
165307828623093-168508801060492
150
150
+
143639757889802-147894475709541
151
151
+
78755790555282-79225938624159
152
152
+
14138223877747-14138223877747
153
153
+
278550141756410-280989120910301
154
154
+
257292001338432-257437010542830
155
155
+
382417022284888-383037049573035
156
156
+
405444920918505-407642614822359
157
157
+
20551130347159-22866841662034
158
158
+
257292001338432-257437010542830
159
159
+
352221290016534-353406793430300
160
160
+
111589773767805-118743888275326
161
161
+
353882376221457-355302743754497
162
162
+
494319600739048-500132235482877
163
163
+
206274751599945-208563447788717
164
164
+
326108650535098-330911444533497
165
165
+
64601522636201-69278000520467
166
166
+
236896652986937-238889664996400
167
167
+
76580679130959-76850399707072
168
168
+
23559981379484-25727624448171
169
169
+
75100216224333-75562993535351
170
170
+
519175296031505-521134018156447
171
171
+
256802625238664-257437010542830
172
172
+
382535746223231-383340526298139
173
173
+
41269089149347-49642182021355
174
174
+
258513476853811-259076564266146
175
175
+
257999014714194-258274397103704
176
176
+
508167792132878-510252049970299
177
177
+
178
178
+
483969530684122
179
179
+
134846534475894
180
180
+
324241214092481
181
181
+
244191528770542
182
182
+
124507758892152
183
183
+
76559339277532
184
184
+
95889243666336
185
185
+
21515935777259
186
186
+
115339323569542
187
187
+
136232130615684
188
188
+
329432916979868
189
189
+
5882445771325
190
190
+
336843450910115
191
191
+
158467907477388
192
192
+
114288813866782
193
193
+
548081571014923
194
194
+
507536881101751
195
195
+
1602547114782
196
196
+
516167633022656
197
197
+
73380041737416
198
198
+
465576446609197
199
199
+
83729040194730
200
200
+
517345919605281
201
201
+
481252268208569
202
202
+
257056373429367
203
203
+
546221674813606
204
204
+
314211116404803
205
205
+
156484152709521
206
206
+
396534320538981
207
207
+
65936008767184
208
208
+
181825537789519
209
209
+
247003020408113
210
210
+
14307569526559
211
211
+
144679215340716
212
212
+
7185677396816
213
213
+
346524951878936
214
214
+
325667639903010
215
215
+
324322053137166
216
216
+
517673821103256
217
217
+
133609351014751
218
218
+
66708187938845
219
219
+
328321984017255
220
220
+
486520593554539
221
221
+
268454562872729
222
222
+
224637156497537
223
223
+
543313587272160
224
224
+
520444060582587
225
225
+
28220506758897
226
226
+
82738052957338
227
227
+
308032121842232
228
228
+
15356831834955
229
229
+
302415925831627
230
230
+
226195511828473
231
231
+
306934185519545
232
232
+
480053939971926
233
233
+
538667059312545
234
234
+
279807421453471
235
235
+
79598805325091
236
236
+
298149776136875
237
237
+
201877559973578
238
238
+
518688484310407
239
239
+
318197816882328
240
240
+
132766842422650
241
241
+
10383965698474
242
242
+
27692924727841
243
243
+
434702504527118
244
244
+
363517500960245
245
245
+
106759358439183
246
246
+
67357015927787
247
247
+
357398168124745
248
248
+
27430020565684
249
249
+
256891762362185
250
250
+
545734346470704
251
251
+
508958161584669
252
252
+
256831470930042
253
253
+
543671596644688
254
254
+
226613215914570
255
255
+
365267169247370
256
256
+
143877297437837
257
257
+
353812949280019
258
258
+
3895005289018
259
259
+
405570199567921
260
260
+
544846817875010
261
261
+
418425393794310
262
262
+
430665837011380
263
263
+
102458724396620
264
264
+
43770768000130
265
265
+
136021892171152
266
266
+
240246396459502
267
267
+
477037985217113
268
268
+
337328652973869
269
269
+
481111160730227
270
270
+
310508861676325
271
271
+
144509323649075
272
272
+
333387580033028
273
273
+
143250601022636
274
274
+
158267518145967
275
275
+
34661237980711
276
276
+
38528616677126
277
277
+
526565972596028
278
278
+
556222340139707
279
279
+
278969115145675
280
280
+
356137941858067
281
281
+
145195723550206
282
282
+
513789970058092
283
283
+
242434218583591
284
284
+
438486706664102
285
285
+
548770245718373
286
286
+
351862434936439
287
287
+
495297857488712
288
288
+
547148560152571
289
289
+
34335024180235
290
290
+
416658757520092
291
291
+
368467766147937
292
292
+
399302689052999
293
293
+
67518331255299
294
294
+
4019202025172
295
295
+
488567676198819
296
296
+
103976144643538
297
297
+
556071358821241
298
298
+
23891411421466
299
299
+
525322930499935
300
300
+
247770669638303
301
301
+
151874628354158
302
302
+
548665529786170
303
303
+
116375577844876
304
304
+
136506810380300
305
305
+
154757447209221
306
306
+
334776788778855
307
307
+
159329832250887
308
308
+
535141293776549
309
309
+
275249592876833
310
310
+
549744286732272
311
311
+
72898113565889
312
312
+
197216955312947
313
313
+
226846021437832
314
314
+
449416848195229
315
315
+
237611491103432
316
316
+
103346247930976
317
317
+
207807126371939
318
318
+
528657142787418
319
319
+
571046711271
320
320
+
557792911303366
321
321
+
22619627827029
322
322
+
150621659175039
323
323
+
443527396465402
324
324
+
396480056105212
325
325
+
118045733488481
326
326
+
389267424505955
327
327
+
133901905495640
328
328
+
438551255592745
329
329
+
56979133405054
330
330
+
365272492121712
331
331
+
427881125009411
332
332
+
177958517895805
333
333
+
425157811786198
334
334
+
480954817604208
335
335
+
539474363220502
336
336
+
266547301861654
337
337
+
488039159707406
338
338
+
358233743693465
339
339
+
447639701430752
340
340
+
185639217706592
341
341
+
167208175884348
342
342
+
295175513814538
343
343
+
497240350759325
344
344
+
246496187825975
345
345
+
414047970388713
346
346
+
25185980756065
347
347
+
246245778519546
348
348
+
362929601505053
349
349
+
151235059844638
350
350
+
520446031578988
351
351
+
206030080072493
352
352
+
151564953821399
353
353
+
525194029618293
354
354
+
369450524407589
355
355
+
129396639012330
356
356
+
275876665656323
357
357
+
114117225945974
358
358
+
385415130088548
359
359
+
505848426150917
360
360
+
257765422989778
361
361
+
498798399431828
362
362
+
59007860582157
363
363
+
514260784362563
364
364
+
468915172619545
365
365
+
67352121900278
366
366
+
146273824965592
367
367
+
424779019280213
368
368
+
323437587742519
369
369
+
359454428505682
370
370
+
83812736465162
371
371
+
339898202729449
372
372
+
396013522613740
373
373
+
546037612798746
374
374
+
536125986298003
375
375
+
260361153705695
376
376
+
240230844960021
377
377
+
84085502858281
378
378
+
324789179995334
379
379
+
326754761514412
380
380
+
223805530549562
381
381
+
237146847097019
382
382
+
186594584475058
383
383
+
313499394372084
384
384
+
104302567699651
385
385
+
167489349794991
386
386
+
258778069863877
387
387
+
537227513237627
388
388
+
95213251031246
389
389
+
336850977369205
390
390
+
367215012533810
391
391
+
157013339681386
392
392
+
475978347736936
393
393
+
515946032452248
394
394
+
545012685230167
395
395
+
195391491161932
396
396
+
111342533200762
397
397
+
143749738584752
398
398
+
513933638407437
399
399
+
194899521506944
400
400
+
36382828455799
401
401
+
274164993468959
402
402
+
25089318248308
403
403
+
54443439212871
404
404
+
340627699698822
405
405
+
436497741711384
406
406
+
184966775193719
407
407
+
386249200343299
408
408
+
314349429888231
409
409
+
214888534550077
410
410
+
379486467343968
411
411
+
304963080280306
412
412
+
21329885844734
413
413
+
394317827059725
414
414
+
175903028197701
415
415
+
476463668595003
416
416
+
64439112654339
417
417
+
538171366580848
418
418
+
42622556568583
419
419
+
529849201933390
420
420
+
7775396955587
421
421
+
8360611567244
422
422
+
242424473516216
423
423
+
425104302837993
424
424
+
299570849710439
425
425
+
126169813691055
426
426
+
495185603833603
427
427
+
456278296220610
428
428
+
191425394465359
429
429
+
335997368993074
430
430
+
313287347143828
431
431
+
309426133169257
432
432
+
293130784582998
433
433
+
335374734770434
434
434
+
159691925958258
435
435
+
105993031055946
436
436
+
376499006296856
437
437
+
326160393279645
438
438
+
147441679682264
439
439
+
358456733306497
440
440
+
395171835147976
441
441
+
178084112197800
442
442
+
466513737300590
443
443
+
494955078214002
444
444
+
93766390139486
445
445
+
1080197280642
446
446
+
355314625180389
447
447
+
315093848180940
448
448
+
112702927852697
449
449
+
304245332831853
450
450
+
149515693035145
451
451
+
98077866816222
452
452
+
111721679896057
453
453
+
547382985558826
454
454
+
440924245206304
455
455
+
293137401658731
456
456
+
189858382518659
457
457
+
488004767827421
458
458
+
535743369213340
459
459
+
280863562187874
460
460
+
126265304714963
461
461
+
373772282963500
462
462
+
527111047168547
463
463
+
412522950543664
464
464
+
354172374525121
465
465
+
177940093269646
466
466
+
133198374927723
467
467
+
328208325811140
468
468
+
374511079752324
469
469
+
92433780081109
470
470
+
414626765124316
471
471
+
397241228479117
472
472
+
364001889255381
473
473
+
369906960506762
474
474
+
151783270135262
475
475
+
170750705400047
476
476
+
3203783355516
477
477
+
158012912534588
478
478
+
416976871562171
479
479
+
4375381809965
480
480
+
116808296245294
481
481
+
417314373280181
482
482
+
469135069732508
483
483
+
97420297479845
484
484
+
87821757432808
485
485
+
54394446570241
486
486
+
14623955913456
487
487
+
294216593461051
488
488
+
43084297541170
489
489
+
340494021386216
490
490
+
360588896701388
491
491
+
476827831980242
492
492
+
248983311793489
493
493
+
83921113556254
494
494
+
443265846718327
495
495
+
514348114434800
496
496
+
177776687783072
497
497
+
340232592358339
498
498
+
397775490984331
499
499
+
176982657631436
500
500
+
2733443000125
501
501
+
297577675780162
502
502
+
90593131734446
503
503
+
352970615366460
504
504
+
3426743899713
505
505
+
246173353803347
506
506
+
535107215913105
507
507
+
14594737273579
508
508
+
509030668086068
509
509
+
535674637243800
510
510
+
17104806707765
511
511
+
29532371959813
512
512
+
238808089134047
513
513
+
367356288981416
514
514
+
441478593138103
515
515
+
386626545665479
516
516
+
341094938124573
517
517
+
221129801778293
518
518
+
110052627335468
519
519
+
536649396631708
520
520
+
323283290339183
521
521
+
266465372536579
522
522
+
82998221779092
523
523
+
216708935607847
524
524
+
422947638470867
525
525
+
407579772457429
526
526
+
224245164590380
527
527
+
482678131169935
528
528
+
272699398813841
529
529
+
315013422698507
530
530
+
538069879966894
531
531
+
23255789303377
532
532
+
35390960147875
533
533
+
526288282828081
534
534
+
415889570761231
535
535
+
363841768689801
536
536
+
85555025900010
537
537
+
214839496947132
538
538
+
549124463824506
539
539
+
26924461050179
540
540
+
26582591241389
541
541
+
58082323590728
542
542
+
329378453914543
543
543
+
256868555299605
544
544
+
50918159437233
545
545
+
139804573757363
546
546
+
278458399612091
547
547
+
196410616977478
548
548
+
53188414675342
549
549
+
463886065368488
550
550
+
220620334490470
551
551
+
249553863404648
552
552
+
206583880765639
553
553
+
469002983902364
554
554
+
7379487008746
555
555
+
464634893742380
556
556
+
253572459850670
557
557
+
461511935193437
558
558
+
84258211528148
559
559
+
167751513053625
560
560
+
457960992667463
561
561
+
12574694083039
562
562
+
145409778556459
563
563
+
206262962655021
564
564
+
415045536520316
565
565
+
530893419182750
566
566
+
180155884750788
567
567
+
396553104179047
568
568
+
307483045096659
569
569
+
352225251943782
570
570
+
458604371553255
571
571
+
124371684266065
572
572
+
275495716883970
573
573
+
489021534538219
574
574
+
325717068998637
575
575
+
474923884788634
576
576
+
46321416194636
577
577
+
53809553308128
578
578
+
47184072223373
579
579
+
495365918563982
580
580
+
436281074939529
581
581
+
240423624822152
582
582
+
91919719916407
583
583
+
401078151082372
584
584
+
243362623300803
585
585
+
421657265732157
586
586
+
545001600865263
587
587
+
286830642156279
588
588
+
153099100772483
589
589
+
384200969357261
590
590
+
138384683842929
591
591
+
359641480171831
592
592
+
225994477181592
593
593
+
447188146176533
594
594
+
158354958876421
595
595
+
93418787219463
596
596
+
42947419002715
597
597
+
464980440538753
598
598
+
475594901964866
599
599
+
25430955456092
600
600
+
232900766730810
601
601
+
382581793156882
602
602
+
545599446196832
603
603
+
265142258611661
604
604
+
79761264248491
605
605
+
126118275186647
606
606
+
159456150259477
607
607
+
418508935712086
608
608
+
456354788873768
609
609
+
497128904608321
610
610
+
178292911603523
611
611
+
519029955037144
612
612
+
142043551573774
613
613
+
159056650960309
614
614
+
245084489809551
615
615
+
220199819550244
616
616
+
519799765997056
617
617
+
285990193328644
618
618
+
280622260724175
619
619
+
145471372109725
620
620
+
309261579166411
621
621
+
312319846923610
622
622
+
136072246468211
623
623
+
479279506457864
624
624
+
297128739224106
625
625
+
71372586536807
626
626
+
48011116877175
627
627
+
328597217715680
628
628
+
385376644541741
629
629
+
357685506654878
630
630
+
487586361809575
631
631
+
368969777978102
632
632
+
477909389273307
633
633
+
315515834973742
634
634
+
456756398388003
635
635
+
375096701985914
636
636
+
366439721541026
637
637
+
290797636198973
638
638
+
63660287522212
639
639
+
398070823658333
640
640
+
105584823718003
641
641
+
378088085133197
642
642
+
303474129109902
643
643
+
167375016090640
644
644
+
320902207576787
645
645
+
331540640286751
646
646
+
427959766484667
647
647
+
232698211623291
648
648
+
478414083644492
649
649
+
509827518467712
650
650
+
22255576479438
651
651
+
533866263465246
652
652
+
338944642558679
653
653
+
270189665649331
654
654
+
304636764277785
655
655
+
557062113390034
656
656
+
355477690098162
657
657
+
116606327683107
658
658
+
383739232595420
659
659
+
365664655663358
660
660
+
223230776378807
661
661
+
516135284490470
662
662
+
193983329308152
663
663
+
97165054235884
664
664
+
427768969621038
665
665
+
551718461205201
666
666
+
28790463939255
667
667
+
86969971124985
668
668
+
357247894303719
669
669
+
359269239212447
670
670
+
174279963249525
671
671
+
398185512576093
672
672
+
206982870959748
673
673
+
365944304489498
674
674
+
237272730798646
675
675
+
93668212156714
676
676
+
25440033906280
677
677
+
233197818950138
678
678
+
519269479057762
679
679
+
536457403326364
680
680
+
159295728403582
681
681
+
527928520346885
682
682
+
500599597624136
683
683
+
534976659497530
684
684
+
535434475833834
685
685
+
518303776798118
686
686
+
420096694579271
687
687
+
377501288662965
688
688
+
226939870337501
689
689
+
143685000975837
690
690
+
76375182090976
691
691
+
216368432550608
692
692
+
424394214853791
693
693
+
295948407320120
694
694
+
16221340626338
695
695
+
187776596495230
696
696
+
466541914876486
697
697
+
329653620056845
698
698
+
30387147959890
699
699
+
67651950361939
700
700
+
37463715196794
701
701
+
228242450944275
702
702
+
76694574911018
703
703
+
399043433709413
704
704
+
470958935752568
705
705
+
64481203215852
706
706
+
49069477958994
707
707
+
68514114637592
708
708
+
214875324329857
709
709
+
144508446789223
710
710
+
338275991324538
711
711
+
126323906828278
712
712
+
475051872802319
713
713
+
270460968315427
714
714
+
277920909920086
715
715
+
526881090454794
716
716
+
174011088218004
717
717
+
256806491463980
718
718
+
228066384672592
719
719
+
509832363134096
720
720
+
155915081868821
721
721
+
365293196957383
722
722
+
29465737982747
723
723
+
557735053236687
724
724
+
325839150228369
725
725
+
355297506016722
726
726
+
28627978865000
727
727
+
143982382537643
728
728
+
68479417040280
729
729
+
349340553274233
730
730
+
202609370376508
731
731
+
165502976930441
732
732
+
447039508891605
733
733
+
369893323992844
734
734
+
73430406866069
735
735
+
15778143381225
736
736
+
207184834220621
737
737
+
44355827308303
738
738
+
288680228659485
739
739
+
475648547887691
740
740
+
124784434736168
741
741
+
442993042622609
742
742
+
133203202972607
743
743
+
275928178759562
744
744
+
499138650924781
745
745
+
361122612863812
746
746
+
233506518953662
747
747
+
499753131604069
748
748
+
315324011290606
749
749
+
304094643266622
750
750
+
6961197064426
751
751
+
212207043154793
752
752
+
247265937679279
753
753
+
233021808277191
754
754
+
296246260347904
755
755
+
309617960852566
756
756
+
317725018211381
757
757
+
531244085841561
758
758
+
102431250456517
759
759
+
62115787464395
760
760
+
303617114236759
761
761
+
226497559746785
762
762
+
54373523557075
763
763
+
61599625521976
764
764
+
519468631785677
765
765
+
194637241721010
766
766
+
82494298072170
767
767
+
262937564549098
768
768
+
527181874205634
769
769
+
91533451338961
770
770
+
42623497699099
771
771
+
538874146809441
772
772
+
258151733414885
773
773
+
173623471580665
774
774
+
314875968789773
775
775
+
329389255853388
776
776
+
169607935572146
777
777
+
72620593184564
778
778
+
46592282515546
779
779
+
97782641229772
780
780
+
456081986721724
781
781
+
82147525786787
782
782
+
30263438561683
783
783
+
234287026278595
784
784
+
296619564481696
785
785
+
301516401568005
786
786
+
359054688744269
787
787
+
250628628599165
788
788
+
517113758820394
789
789
+
4856598037938
790
790
+
178650792424154
791
791
+
248562722288312
792
792
+
233033860256464
793
793
+
538772022247131
794
794
+
164326342553328
795
795
+
550343854949668
796
796
+
360157023823769
797
797
+
1803697288940
798
798
+
4139409521558
799
799
+
375957815341508
800
800
+
112920260929310
801
801
+
66574822935204
802
802
+
62898818949285
803
803
+
448126232201644
804
804
+
203267906044629
805
805
+
25127561812240
806
806
+
306993490621537
807
807
+
272368490968221
808
808
+
58583345045064
809
809
+
307570420230823
810
810
+
521005005682681
811
811
+
496569164006746
812
812
+
167364294803209
813
813
+
336740234064117
814
814
+
250011710044489
815
815
+
173927649656064
816
816
+
21214849223624
817
817
+
155047693029383
818
818
+
365788530276941
819
819
+
84686742981610
820
820
+
41562968837517
821
821
+
519123245958210
822
822
+
545223282310866
823
823
+
551856147116860
824
824
+
3568177873238
825
825
+
45182314995864
826
826
+
374653755646870
827
827
+
476984514643406
828
828
+
147363072687684
829
829
+
270835004458000
830
830
+
137070781794557
831
831
+
36487493917820
832
832
+
327528227553610
833
833
+
375423885360975
834
834
+
178335107103962
835
835
+
297728378740167
836
836
+
461490959767418
837
837
+
427972256361067
838
838
+
263288523571949
839
839
+
530666369819114
840
840
+
432864042407375
841
841
+
61347505177274
842
842
+
387833629014600
843
843
+
504447835968609
844
844
+
232813626954897
845
845
+
139068577742792
846
846
+
161071422228044
847
847
+
255696586938936
848
848
+
312722202046362
849
849
+
447426429365272
850
850
+
266572142476009
851
851
+
178145856260192
852
852
+
534783027696494
853
853
+
300960362793241
854
854
+
22253337875323
855
855
+
417551837111114
856
856
+
270207762003517
857
857
+
148438872224233
858
858
+
25207797237573
859
859
+
190904768850025
860
860
+
416570736588329
861
861
+
356239611309637
862
862
+
426908122628713
863
863
+
535131885265108
864
864
+
92135671719027
865
865
+
492493744957275
866
866
+
34107221758520
867
867
+
293097299371182
868
868
+
286722048885489
869
869
+
531575603231473
870
870
+
394491833524300
871
871
+
28958657533731
872
872
+
66262825220072
873
873
+
477908722836949
874
874
+
515907423451483
875
875
+
258682556346661
876
876
+
58494159751536
877
877
+
102618941361985
878
878
+
496296646204996
879
879
+
235699735991917
880
880
+
252999061367931
881
881
+
475544327112825
882
882
+
398627388336384
883
883
+
373369483778631
884
884
+
443942272979090
885
885
+
431700345117554
886
886
+
98551855057802
887
887
+
258141509527950
888
888
+
468131639524608
889
889
+
305667739994422
890
890
+
529074007708754
891
891
+
5433996995892
892
892
+
447374280579752
893
893
+
143328427212474
894
894
+
442854184981197
895
895
+
486373507111640
896
896
+
158026508768433
897
897
+
559035600712671
898
898
+
245658488421511
899
899
+
426505106474728
900
900
+
517210578599628
901
901
+
536886399834561
902
902
+
133181695754500
903
903
+
243190055516782
904
904
+
44100169820085
905
905
+
533069340236116
906
906
+
2576773387598
907
907
+
63370702051588
908
908
+
270619157139047
909
909
+
22719156110334
910
910
+
458300796661398
911
911
+
385260477534677
912
912
+
358219875887338
913
913
+
528291234443303
914
914
+
386055801873205
915
915
+
330590383129805
916
916
+
400005565541506
917
917
+
339652661530822
918
918
+
363753546955840
919
919
+
53798497709306
920
920
+
395745899333004
921
921
+
12813660463889
922
922
+
510591307996218
923
923
+
259051402893133
924
924
+
303842965198320
925
925
+
287875290471184
926
926
+
424425993339438
927
927
+
231617859374942
928
928
+
431449045794595
929
929
+
196946850882279
930
930
+
287843491644802
931
931
+
103130790266803
932
932
+
339703691692853
933
933
+
147997735422418
934
934
+
36198175922710
935
935
+
42724706286849
936
936
+
455877804610941
937
937
+
387797824521651
938
938
+
35284838211976
939
939
+
191105626749885
940
940
+
475813775620685
941
941
+
440511928132454
942
942
+
75413717308806
943
943
+
309551380325368
944
944
+
455129251094598
945
945
+
297964234612142
946
946
+
20492108721380
947
947
+
489080875566939
948
948
+
288254690290919
949
949
+
468002631409921
950
950
+
195797228556832
951
951
+
206530076968890
952
952
+
47843574414090
953
953
+
443276965363127
954
954
+
145754631399248
955
955
+
325655657717619
956
956
+
488477480425089
957
957
+
181614917906990
958
958
+
541300136757641
959
959
+
525917708491053
960
960
+
76459113368445
961
961
+
359765415500375
962
962
+
253200263468554
963
963
+
88669408642710
964
964
+
268110002618670
965
965
+
142463427282261
966
966
+
339007609195248
967
967
+
507245708094480
968
968
+
168364347650724
969
969
+
137935808178751
970
970
+
220640201417000
971
971
+
42640615459431
972
972
+
223926652079500
973
973
+
386650371662663
974
974
+
306084521822111
975
975
+
340148163129977
976
976
+
19447311152225
977
977
+
552343600374216
978
978
+
282199244856959
979
979
+
278700266920807
980
980
+
207578071158674
981
981
+
297628462534685
982
982
+
78959904939554
983
983
+
114965972740789
984
984
+
48904590471980
985
985
+
443335822541211
986
986
+
5377873323069
987
987
+
293657692555235
988
988
+
532721868023316
989
989
+
91634961308807
990
990
+
66309579935597
991
991
+
438582296375425
992
992
+
367750739172580
993
993
+
26059007562133
994
994
+
215316331023675
995
995
+
418753200645063
996
996
+
168191204771992
997
997
+
28271143822400
998
998
+
82723847893415
999
999
+
276609955236719
1000
1000
+
5587367237445
1001
1001
+
154748948746590
1002
1002
+
343141077636919
1003
1003
+
397253043203883
1004
1004
+
269528085361621
1005
1005
+
52569273267808
1006
1006
+
1784630483602
1007
1007
+
293332457764520
1008
1008
+
465418830566226
1009
1009
+
259923898296162
1010
1010
+
468672750102118
1011
1011
+
357364978201254
1012
1012
+
136239537376212
1013
1013
+
247576661337941
1014
1014
+
486214617219118
1015
1015
+
418944700198067
1016
1016
+
389891232178666
1017
1017
+
342426509401799
1018
1018
+
265216471462061
1019
1019
+
266946229916545
1020
1020
+
390608819071508
1021
1021
+
62683991552230
1022
1022
+
208916523959165
1023
1023
+
505124538859266
1024
1024
+
197917389164686
1025
1025
+
487197683372118
1026
1026
+
275602622506350
1027
1027
+
220212174568700
1028
1028
+
287443110496364
1029
1029
+
558378567416262
1030
1030
+
226632988376411
1031
1031
+
349284786332935
1032
1032
+
406819983670704
1033
1033
+
53817894562288
1034
1034
+
139734150641470
1035
1035
+
249526911232027
1036
1036
+
145251006386217
1037
1037
+
298228464319415
1038
1038
+
76094038531447
1039
1039
+
425083134330348
1040
1040
+
374671243197967
1041
1041
+
339112774679116
1042
1042
+
304269942984181
1043
1043
+
25994674453798
1044
1044
+
167422347771715
1045
1045
+
226275392254662
1046
1046
+
465295279298423
1047
1047
+
527846820982375
1048
1048
+
557120761855068
1049
1049
+
34691562941791
1050
1050
+
365111833033794
1051
1051
+
125184267874194
1052
1052
+
156110285307803
1053
1053
+
336944528404015
1054
1054
+
327742760892993
1055
1055
+
88142033831001
1056
1056
+
122726957627630
1057
1057
+
513410116454761
1058
1058
+
411225386138675
1059
1059
+
366754155214827
1060
1060
+
400741371915853
1061
1061
+
124339308548672
1062
1062
+
398830059755914
1063
1063
+
446611647956056
1064
1064
+
338407133618954
1065
1065
+
152717268595681
1066
1066
+
114033705676349
1067
1067
+
484542319558590
1068
1068
+
393599666135150
1069
1069
+
325468442200967
1070
1070
+
166830597794835
1071
1071
+
34062764171727
1072
1072
+
112108488945249
1073
1073
+
528523426224331
1074
1074
+
224895569924662
1075
1075
+
104410209131265
1076
1076
+
346944333780107
1077
1077
+
363858652470379
1078
1078
+
506390192023755
1079
1079
+
284063541095909
1080
1080
+
480751804297958
1081
1081
+
486358452093241
1082
1082
+
424835072082171
1083
1083
+
394857401601715
1084
1084
+
274343917793566
1085
1085
+
204608719741911
1086
1086
+
470268886767181
1087
1087
+
426972117505196
1088
1088
+
357863271957764
1089
1089
+
459186007641777
1090
1090
+
396953698596250
1091
1091
+
303964347368417
1092
1092
+
497391235757859
1093
1093
+
122958287901744
1094
1094
+
528298007517825
1095
1095
+
347319331039656
1096
1096
+
56066570014582
1097
1097
+
98346007673017
1098
1098
+
476026266639962
1099
1099
+
53588795383005
1100
1100
+
118362083518747
1101
1101
+
451125898238499
1102
1102
+
497973357911290
1103
1103
+
382627941481925
1104
1104
+
61539671918503
1105
1105
+
169332923613112
1106
1106
+
407081695788058
1107
1107
+
134146412827669
1108
1108
+
366236842724572
1109
1109
+
124301076903027
1110
1110
+
354509799599427
1111
1111
+
470730081291361
1112
1112
+
315038813081682
1113
1113
+
423126374041206
1114
1114
+
562175975577227
1115
1115
+
546155844299630
1116
1116
+
172055115567500
1117
1117
+
467979935802692
1118
1118
+
477095960948691
1119
1119
+
320287734547898
1120
1120
+
517671686924416
1121
1121
+
215330270196792
1122
1122
+
44304803858588
1123
1123
+
33874435811839
1124
1124
+
33690166308501
1125
1125
+
383547970564262
1126
1126
+
361521559923460
1127
1127
+
92212930860085
1128
1128
+
419471330119113
1129
1129
+
35091716240627
1130
1130
+
325858018783643
1131
1131
+
81962418291618
1132
1132
+
250041659630052
1133
1133
+
463593418093934
1134
1134
+
396155055123252
1135
1135
+
127406747768655
1136
1136
+
129659273126033
1137
1137
+
398857688725737
1138
1138
+
304851311839439
1139
1139
+
367230248335456
1140
1140
+
215843172575172
1141
1141
+
352773351151603
1142
1142
+
365069262484863
1143
1143
+
473050623221751
1144
1144
+
307307192959242
1145
1145
+
209803248493122
1146
1146
+
273049794669286
1147
1147
+
270633498407017
1148
1148
+
125099654673982
1149
1149
+
381163394756070
1150
1150
+
275304476575387
1151
1151
+
38410041523486
1152
1152
+
250142010333023
1153
1153
+
491399700800928
1154
1154
+
513717466865705
1155
1155
+
260343947860848
1156
1156
+
309306888683545
1157
1157
+
120042618766165
1158
1158
+
21273028786202
1159
1159
+
85653917497380
1160
1160
+
68485675893536
1161
1161
+
99279027972090
1162
1162
+
126309282944030
1163
1163
+
276940839813092
1164
1164
+
56598869823346
1165
1165
+
203457946950197
1166
1166
+
173569818635104
1167
1167
+
145189501665650
1168
1168
+
207307193083270
1169
1169
+
450888195298269
1170
1170
+
538474123462493
1171
1171
+
238002580549273
1172
1172
+
537082966312831
1173
1173
+
272423510362651
1174
1174
+
153610318586730
1175
1175
+
417989861029380
1176
1176
+
286374187059498
1177
1177
+
358433743942710
+28
src/day5.rs
···
1
1
+
use std::ops::RangeInclusive;
2
2
+
3
3
+
pub fn day5_part1(input: &str) -> String {
4
4
+
let (ranges, ingredients) = parse(input);
5
5
+
ingredients
6
6
+
.into_iter()
7
7
+
.filter(|ingredient| ranges.iter().any(|range| range.contains(ingredient)))
8
8
+
.count()
9
9
+
.to_string()
10
10
+
}
11
11
+
12
12
+
pub fn day5_part2(input: &str) -> String {
13
13
+
todo!()
14
14
+
}
15
15
+
16
16
+
fn parse(input: &str) -> (Vec<RangeInclusive<i64>>, Vec<i64>) {
17
17
+
let (ranges, ingredients) = input.split_once("\n\n").unwrap();
18
18
+
let ranges = ranges
19
19
+
.lines()
20
20
+
.map(|line| line.split_once('-').unwrap())
21
21
+
.map(|(l, r)| l.parse().unwrap()..=r.parse().unwrap())
22
22
+
.collect();
23
23
+
let ingredients = ingredients
24
24
+
.lines()
25
25
+
.map(|line| line.parse().unwrap())
26
26
+
.collect();
27
27
+
(ranges, ingredients)
28
28
+
}
+16
src/lib.rs
···
117
117
118
118
pub mod day3;
119
119
pub mod day4;
120
120
+
pub mod day5;
120
121
mod spatial;
121
122
122
123
#[cfg(test)]
123
124
mod tests {
124
125
use super::*;
126
126
+
127
127
+
#[test]
128
128
+
fn day5_part1_test() {
129
129
+
let test_result = day5::day5_part1(include_str!("../input/day5.test.txt"));
130
130
+
assert_eq!(test_result, "3");
131
131
+
let result = day5::day5_part1(include_str!("../input/day5.txt"));
132
132
+
assert_eq!(result, "885");
133
133
+
}
134
134
+
// #[test]
135
135
+
// fn day5_part2_test() {
136
136
+
// let test_result = day5::day5_part2(include_str!("../input/day5.test.txt"));
137
137
+
// assert_eq!(test_result, "43");
138
138
+
// // let result = day5::day5_part2(include_str!("../input/day5.txt"));
139
139
+
// // assert_eq!(result, "7922");
140
140
+
// }
125
141
126
142
#[test]
127
143
fn day4_part1_test() {