tangled
alpha
login
or
join now
thecoded.prof
/
aoc
0
fork
atom
Advent of Code
0
fork
atom
overview
issues
pulls
pipelines
feat: init & day 1 complete
thecoded.prof
3 months ago
b10fcee2
+1243
9 changed files
expand all
collapse all
unified
split
.envrc
.gitignore
day_1
.gitignore
Cargo.lock
Cargo.toml
input.txt
src
main.rs
flake.lock
flake.nix
+1
.envrc
···
1
1
+
use_flake .
+1
.gitignore
···
1
1
+
.direnv
+1
day_1/.gitignore
···
1
1
+
/target
+7
day_1/Cargo.lock
···
1
1
+
# This file is automatically @generated by Cargo.
2
2
+
# It is not intended for manual editing.
3
3
+
version = 3
4
4
+
5
5
+
[[package]]
6
6
+
name = "day_1"
7
7
+
version = "0.1.0"
+6
day_1/Cargo.toml
···
1
1
+
[package]
2
2
+
name = "day_1"
3
3
+
version = "0.1.0"
4
4
+
edition = "2021"
5
5
+
6
6
+
[dependencies]
+1000
day_1/input.txt
···
1
1
+
77221 93653
2
2
+
61169 27995
3
3
+
49546 69782
4
4
+
11688 41563
5
5
+
15820 48282
6
6
+
63235 37517
7
7
+
28850 68189
8
8
+
80735 25255
9
9
+
42616 65322
10
10
+
55068 99897
11
11
+
30851 35509
12
12
+
14907 49013
13
13
+
64732 92011
14
14
+
16709 68830
15
15
+
67643 36207
16
16
+
44080 23559
17
17
+
96480 58330
18
18
+
99450 40186
19
19
+
21169 63410
20
20
+
58096 21671
21
21
+
53828 79572
22
22
+
47026 44529
23
23
+
90101 28656
24
24
+
45773 73412
25
25
+
71303 85991
26
26
+
45304 78294
27
27
+
96528 23559
28
28
+
19794 17882
29
29
+
74831 17211
30
30
+
88912 11644
31
31
+
98961 80435
32
32
+
15788 96101
33
33
+
16350 86995
34
34
+
96806 19028
35
35
+
99959 77868
36
36
+
58887 90255
37
37
+
42568 25255
38
38
+
29278 88912
39
39
+
94028 63269
40
40
+
42810 21548
41
41
+
97490 71747
42
42
+
89051 24477
43
43
+
73916 31808
44
44
+
97751 88912
45
45
+
73608 77868
46
46
+
62426 13754
47
47
+
29429 36177
48
48
+
11070 10894
49
49
+
78656 85185
50
50
+
31308 60500
51
51
+
96166 91114
52
52
+
36906 85134
53
53
+
99662 77868
54
54
+
66402 41563
55
55
+
37085 14475
56
56
+
80907 53324
57
57
+
61650 53324
58
58
+
84223 63753
59
59
+
83891 47827
60
60
+
15973 77536
61
61
+
68843 40593
62
62
+
98854 31274
63
63
+
42426 97404
64
64
+
25255 67531
65
65
+
44559 50141
66
66
+
93909 50674
67
67
+
28070 32858
68
68
+
24880 24813
69
69
+
29338 89795
70
70
+
64883 77868
71
71
+
66924 57646
72
72
+
32984 66502
73
73
+
32238 39062
74
74
+
38816 23559
75
75
+
58770 65322
76
76
+
74953 91636
77
77
+
70592 19028
78
78
+
93111 11644
79
79
+
31065 23537
80
80
+
67370 19028
81
81
+
18314 47412
82
82
+
71075 74334
83
83
+
21544 44529
84
84
+
59137 50980
85
85
+
20440 80749
86
86
+
14393 38495
87
87
+
72130 90255
88
88
+
43828 68830
89
89
+
23262 73660
90
90
+
11923 50980
91
91
+
47754 14164
92
92
+
96043 34362
93
93
+
27162 28090
94
94
+
20838 50713
95
95
+
75009 11121
96
96
+
92099 31274
97
97
+
22054 38248
98
98
+
43518 80106
99
99
+
68189 13153
100
100
+
50520 12727
101
101
+
51425 40674
102
102
+
42998 31053
103
103
+
52443 33051
104
104
+
37256 54436
105
105
+
16648 95555
106
106
+
81123 17329
107
107
+
46974 79835
108
108
+
36328 77868
109
109
+
76373 23559
110
110
+
82592 70046
111
111
+
70600 22417
112
112
+
27116 89690
113
113
+
28090 34969
114
114
+
86348 23559
115
115
+
53145 50980
116
116
+
30203 83301
117
117
+
23347 77681
118
118
+
76433 26236
119
119
+
28046 92869
120
120
+
58920 50980
121
121
+
25518 28090
122
122
+
12791 44529
123
123
+
61967 31808
124
124
+
98022 53056
125
125
+
24326 12263
126
126
+
41095 13121
127
127
+
24045 82448
128
128
+
31274 16530
129
129
+
78021 21589
130
130
+
63029 19658
131
131
+
75684 14475
132
132
+
31258 36493
133
133
+
40561 48589
134
134
+
20457 54974
135
135
+
14783 88465
136
136
+
39433 23537
137
137
+
34774 53324
138
138
+
10455 14329
139
139
+
26338 74416
140
140
+
55227 37003
141
141
+
36963 40380
142
142
+
31910 68189
143
143
+
94894 18220
144
144
+
23166 44111
145
145
+
48884 46787
146
146
+
73036 89795
147
147
+
83519 25205
148
148
+
50205 93653
149
149
+
85926 50141
150
150
+
69194 23559
151
151
+
25529 11642
152
152
+
10182 31274
153
153
+
13638 61987
154
154
+
83588 19028
155
155
+
75911 20768
156
156
+
44692 24325
157
157
+
43278 94888
158
158
+
48148 24394
159
159
+
86205 99327
160
160
+
82605 58818
161
161
+
52770 68189
162
162
+
89068 84917
163
163
+
66452 83679
164
164
+
50217 85099
165
165
+
64914 52073
166
166
+
76460 78294
167
167
+
43026 24410
168
168
+
44179 50980
169
169
+
47653 90255
170
170
+
78061 50980
171
171
+
14475 71478
172
172
+
77868 37150
173
173
+
99645 28090
174
174
+
86267 70055
175
175
+
58072 68830
176
176
+
96428 66585
177
177
+
77501 50141
178
178
+
52344 93653
179
179
+
49534 35509
180
180
+
46925 12437
181
181
+
40005 87987
182
182
+
17329 86995
183
183
+
17585 89795
184
184
+
32296 59660
185
185
+
81836 11644
186
186
+
89435 65322
187
187
+
55149 59423
188
188
+
56971 50141
189
189
+
26342 95142
190
190
+
57894 56227
191
191
+
49762 33007
192
192
+
48949 65641
193
193
+
40453 53505
194
194
+
67613 23537
195
195
+
27110 87987
196
196
+
25231 63910
197
197
+
92546 50713
198
198
+
70074 27554
199
199
+
39649 93653
200
200
+
93231 30520
201
201
+
60008 79179
202
202
+
18449 47209
203
203
+
68828 36207
204
204
+
18908 72254
205
205
+
55426 44661
206
206
+
62522 87987
207
207
+
60923 25255
208
208
+
85721 68107
209
209
+
35153 71814
210
210
+
20053 24813
211
211
+
24233 22904
212
212
+
36237 92731
213
213
+
92077 68189
214
214
+
30105 50674
215
215
+
37032 90255
216
216
+
12745 54116
217
217
+
41563 53324
218
218
+
24700 29145
219
219
+
60226 85335
220
220
+
50713 64775
221
221
+
29972 51790
222
222
+
79176 19794
223
223
+
40017 96101
224
224
+
90724 41345
225
225
+
51608 39176
226
226
+
46178 50141
227
227
+
26151 23489
228
228
+
19569 44529
229
229
+
34368 86052
230
230
+
18948 50801
231
231
+
62091 17329
232
232
+
89749 38984
233
233
+
68315 37514
234
234
+
52396 19794
235
235
+
14981 14475
236
236
+
36038 69571
237
237
+
50048 50980
238
238
+
60796 41563
239
239
+
69942 72877
240
240
+
80976 25234
241
241
+
56722 90255
242
242
+
49489 28090
243
243
+
60768 65557
244
244
+
70753 85065
245
245
+
15233 23522
246
246
+
94697 87600
247
247
+
40958 41532
248
248
+
91709 40116
249
249
+
83586 19028
250
250
+
88140 24977
251
251
+
56993 50980
252
252
+
17980 53324
253
253
+
12421 97982
254
254
+
30183 40884
255
255
+
50452 53324
256
256
+
91314 90651
257
257
+
69995 19028
258
258
+
16588 28090
259
259
+
22432 98658
260
260
+
86088 77868
261
261
+
46361 65322
262
262
+
97178 75705
263
263
+
37444 79320
264
264
+
12275 96101
265
265
+
47016 16942
266
266
+
36822 87327
267
267
+
62082 31274
268
268
+
68265 64314
269
269
+
87344 24603
270
270
+
40642 23559
271
271
+
87254 38755
272
272
+
62372 50713
273
273
+
89026 68830
274
274
+
88519 96101
275
275
+
53514 31808
276
276
+
24686 41563
277
277
+
23817 68705
278
278
+
26704 89031
279
279
+
37908 65322
280
280
+
22665 35601
281
281
+
75378 59200
282
282
+
16797 86995
283
283
+
55847 68189
284
284
+
55932 72688
285
285
+
41470 96101
286
286
+
43557 17329
287
287
+
45439 77868
288
288
+
41230 76226
289
289
+
25104 92869
290
290
+
43736 93653
291
291
+
85938 93653
292
292
+
74153 54726
293
293
+
73956 70350
294
294
+
70419 37102
295
295
+
81275 64160
296
296
+
30656 32684
297
297
+
46218 32617
298
298
+
67969 31808
299
299
+
61544 81806
300
300
+
39376 56568
301
301
+
14769 60336
302
302
+
10199 97703
303
303
+
61064 40091
304
304
+
75531 30486
305
305
+
17211 31808
306
306
+
75184 74633
307
307
+
24565 61765
308
308
+
83922 44529
309
309
+
11644 25255
310
310
+
71836 14393
311
311
+
53030 19028
312
312
+
83437 33190
313
313
+
33687 54998
314
314
+
92054 82083
315
315
+
48250 68533
316
316
+
10977 34363
317
317
+
51050 19028
318
318
+
80898 68276
319
319
+
26442 68830
320
320
+
39875 65514
321
321
+
24976 76417
322
322
+
31946 23537
323
323
+
95278 90255
324
324
+
71678 26450
325
325
+
49641 28580
326
326
+
12962 13674
327
327
+
13598 30362
328
328
+
40620 21256
329
329
+
49062 92869
330
330
+
88449 79529
331
331
+
80153 94081
332
332
+
36918 70556
333
333
+
77902 99228
334
334
+
41848 99097
335
335
+
26032 39378
336
336
+
23830 50980
337
337
+
49712 78294
338
338
+
95464 65322
339
339
+
76971 27393
340
340
+
67074 22132
341
341
+
17629 71246
342
342
+
92019 92869
343
343
+
20780 96521
344
344
+
68372 16880
345
345
+
49710 88060
346
346
+
94680 52634
347
347
+
28626 57101
348
348
+
31808 60809
349
349
+
25578 28090
350
350
+
12020 25255
351
351
+
46008 33046
352
352
+
27712 36207
353
353
+
17168 53033
354
354
+
92923 87987
355
355
+
94668 65843
356
356
+
59490 48858
357
357
+
69085 38485
358
358
+
28242 14664
359
359
+
18302 96101
360
360
+
64047 71241
361
361
+
62752 73532
362
362
+
28873 59278
363
363
+
22206 18029
364
364
+
57298 85374
365
365
+
26420 78294
366
366
+
74055 30817
367
367
+
74377 45566
368
368
+
81846 17058
369
369
+
35184 27305
370
370
+
72054 89795
371
371
+
78666 41563
372
372
+
80545 96101
373
373
+
69240 51322
374
374
+
76319 36831
375
375
+
23617 14475
376
376
+
53848 93653
377
377
+
65082 36888
378
378
+
18802 93491
379
379
+
63942 23559
380
380
+
80208 22876
381
381
+
17018 68830
382
382
+
78018 51611
383
383
+
35520 75130
384
384
+
43479 88543
385
385
+
18522 96101
386
386
+
41260 15010
387
387
+
58041 21675
388
388
+
96272 68830
389
389
+
73601 78294
390
390
+
44788 52104
391
391
+
67152 89795
392
392
+
57671 61399
393
393
+
33841 56764
394
394
+
41963 53394
395
395
+
41010 28090
396
396
+
53937 65322
397
397
+
75472 76675
398
398
+
22253 92068
399
399
+
24277 93653
400
400
+
62012 14475
401
401
+
27539 50141
402
402
+
29180 41637
403
403
+
27151 35922
404
404
+
28752 23559
405
405
+
31602 47673
406
406
+
80298 50906
407
407
+
94689 38297
408
408
+
87987 48139
409
409
+
51692 61967
410
410
+
93653 86995
411
411
+
99694 96638
412
412
+
50948 11644
413
413
+
87830 19794
414
414
+
57579 93403
415
415
+
60947 72082
416
416
+
18514 53324
417
417
+
99194 25255
418
418
+
57630 93653
419
419
+
49914 10526
420
420
+
34613 94340
421
421
+
32145 16105
422
422
+
39569 62764
423
423
+
14118 31274
424
424
+
38901 19016
425
425
+
47443 66925
426
426
+
83812 31274
427
427
+
61920 50141
428
428
+
88684 50713
429
429
+
32305 31808
430
430
+
58695 50713
431
431
+
20016 42720
432
432
+
68955 31976
433
433
+
96299 99509
434
434
+
83258 96101
435
435
+
49424 68830
436
436
+
97130 14043
437
437
+
34668 50936
438
438
+
27567 35509
439
439
+
57890 65959
440
440
+
58399 78860
441
441
+
88934 50980
442
442
+
70656 66788
443
443
+
91507 44529
444
444
+
53671 87987
445
445
+
75858 71137
446
446
+
14726 13674
447
447
+
25416 31274
448
448
+
90521 50075
449
449
+
37289 96101
450
450
+
79415 19028
451
451
+
21158 25355
452
452
+
53210 16168
453
453
+
35192 81526
454
454
+
67240 23559
455
455
+
42967 65310
456
456
+
81598 93094
457
457
+
12765 36207
458
458
+
23853 41643
459
459
+
78439 22984
460
460
+
13052 50141
461
461
+
56642 93653
462
462
+
19028 82791
463
463
+
89371 36244
464
464
+
89795 50799
465
465
+
41542 90489
466
466
+
49486 72630
467
467
+
26630 50763
468
468
+
35019 68830
469
469
+
62271 78294
470
470
+
16433 77868
471
471
+
42466 57338
472
472
+
63666 39984
473
473
+
56231 83564
474
474
+
51132 96101
475
475
+
33675 74200
476
476
+
94670 70445
477
477
+
51236 17822
478
478
+
52493 64460
479
479
+
45346 86995
480
480
+
41620 31274
481
481
+
80479 88912
482
482
+
46200 90255
483
483
+
13789 60686
484
484
+
98564 76843
485
485
+
44974 92717
486
486
+
76047 80674
487
487
+
60650 89430
488
488
+
55723 45722
489
489
+
89426 97853
490
490
+
33961 98414
491
491
+
32872 68189
492
492
+
65322 12029
493
493
+
29922 36159
494
494
+
74923 34697
495
495
+
37065 59688
496
496
+
66622 23559
497
497
+
68253 14475
498
498
+
28664 53324
499
499
+
62981 25761
500
500
+
83161 50674
501
501
+
22849 50980
502
502
+
11119 76308
503
503
+
22980 13794
504
504
+
76171 19411
505
505
+
96351 28221
506
506
+
45573 90255
507
507
+
19850 79146
508
508
+
97828 90483
509
509
+
23867 85271
510
510
+
36353 50141
511
511
+
46579 87987
512
512
+
73434 23559
513
513
+
57169 68189
514
514
+
68768 41682
515
515
+
59354 97617
516
516
+
62181 64641
517
517
+
34167 53324
518
518
+
28374 24803
519
519
+
55863 57352
520
520
+
25058 33040
521
521
+
76126 53005
522
522
+
97283 51641
523
523
+
25887 29253
524
524
+
43067 50713
525
525
+
51616 61868
526
526
+
97533 16129
527
527
+
50692 80951
528
528
+
43173 41626
529
529
+
93917 76055
530
530
+
84713 53465
531
531
+
24130 13599
532
532
+
56773 50980
533
533
+
15310 44529
534
534
+
63375 50141
535
535
+
75875 93653
536
536
+
22284 33135
537
537
+
46294 77836
538
538
+
29713 14393
539
539
+
95318 83346
540
540
+
83264 61967
541
541
+
39267 47771
542
542
+
61101 86995
543
543
+
47882 96101
544
544
+
24345 70347
545
545
+
50674 14475
546
546
+
17296 12880
547
547
+
52605 11644
548
548
+
40817 78294
549
549
+
36207 93653
550
550
+
16045 96101
551
551
+
91784 68830
552
552
+
34583 69934
553
553
+
71867 28090
554
554
+
74898 22671
555
555
+
54609 27206
556
556
+
33070 26257
557
557
+
18570 57394
558
558
+
16766 87036
559
559
+
62825 21503
560
560
+
39793 17504
561
561
+
12038 82452
562
562
+
37265 12706
563
563
+
69479 44529
564
564
+
96101 44260
565
565
+
49175 50713
566
566
+
70708 55412
567
567
+
50136 14475
568
568
+
27300 96101
569
569
+
75794 62368
570
570
+
10277 87990
571
571
+
30825 87987
572
572
+
35563 24149
573
573
+
12505 91890
574
574
+
11323 14393
575
575
+
89922 84455
576
576
+
10927 65359
577
577
+
50656 71304
578
578
+
47973 11644
579
579
+
17156 92869
580
580
+
98964 96101
581
581
+
50980 59345
582
582
+
94733 23559
583
583
+
22743 26134
584
584
+
90255 54273
585
585
+
80006 65322
586
586
+
10157 92869
587
587
+
70496 28090
588
588
+
25569 41226
589
589
+
79982 92869
590
590
+
34897 76485
591
591
+
83357 86388
592
592
+
26352 79503
593
593
+
67432 15174
594
594
+
49155 72153
595
595
+
36311 86995
596
596
+
14394 65333
597
597
+
70928 51667
598
598
+
67367 23559
599
599
+
48195 57003
600
600
+
52001 26154
601
601
+
63251 21651
602
602
+
21894 89795
603
603
+
50774 43252
604
604
+
85637 36207
605
605
+
79243 11644
606
606
+
49512 57954
607
607
+
22454 15919
608
608
+
84214 20805
609
609
+
67121 86995
610
610
+
49247 78035
611
611
+
79313 34840
612
612
+
33168 19814
613
613
+
48657 92888
614
614
+
59824 74905
615
615
+
30088 68830
616
616
+
74246 90052
617
617
+
78389 65322
618
618
+
88418 28090
619
619
+
93716 62226
620
620
+
74962 29324
621
621
+
47309 50980
622
622
+
93517 14393
623
623
+
23895 68175
624
624
+
34548 25255
625
625
+
32628 84730
626
626
+
55988 31274
627
627
+
82578 40953
628
628
+
51728 16926
629
629
+
19440 27805
630
630
+
42922 45159
631
631
+
52930 41563
632
632
+
91562 31274
633
633
+
23559 62680
634
634
+
92150 26879
635
635
+
78315 61783
636
636
+
43601 91325
637
637
+
87621 17838
638
638
+
78580 65350
639
639
+
94778 77868
640
640
+
68519 83273
641
641
+
35509 66389
642
642
+
82288 52439
643
643
+
65083 19794
644
644
+
86995 13010
645
645
+
66618 95850
646
646
+
18656 70145
647
647
+
98537 65322
648
648
+
60842 52161
649
649
+
68830 10132
650
650
+
99689 24077
651
651
+
33740 89795
652
652
+
45595 53090
653
653
+
78239 36207
654
654
+
20185 36207
655
655
+
87307 69366
656
656
+
83009 77868
657
657
+
34685 88642
658
658
+
13674 28090
659
659
+
82450 69909
660
660
+
44812 75146
661
661
+
54296 92869
662
662
+
73558 94990
663
663
+
21422 48229
664
664
+
49473 10547
665
665
+
66108 68189
666
666
+
71169 74202
667
667
+
78276 40690
668
668
+
82977 78294
669
669
+
61842 15634
670
670
+
31582 95459
671
671
+
39064 14475
672
672
+
70204 18593
673
673
+
71244 87987
674
674
+
31642 50490
675
675
+
98413 37109
676
676
+
61175 50141
677
677
+
37168 23559
678
678
+
44093 11032
679
679
+
18806 40848
680
680
+
91249 73483
681
681
+
95812 32572
682
682
+
93644 68189
683
683
+
30669 20850
684
684
+
75404 92869
685
685
+
53324 50141
686
686
+
80675 50216
687
687
+
14897 73401
688
688
+
34074 29952
689
689
+
16366 32630
690
690
+
95656 28090
691
691
+
73964 58896
692
692
+
90705 66916
693
693
+
92869 59662
694
694
+
99522 78294
695
695
+
35903 19794
696
696
+
33033 42610
697
697
+
55650 50980
698
698
+
29289 11753
699
699
+
32302 58345
700
700
+
76036 57644
701
701
+
74870 31274
702
702
+
85035 77868
703
703
+
79322 25255
704
704
+
50332 31274
705
705
+
78294 44529
706
706
+
93000 53324
707
707
+
36560 19028
708
708
+
40041 53525
709
709
+
70360 89795
710
710
+
19074 98749
711
711
+
32829 89603
712
712
+
61436 71046
713
713
+
89938 85369
714
714
+
52708 28090
715
715
+
83958 53324
716
716
+
88155 67097
717
717
+
32730 75527
718
718
+
64221 23559
719
719
+
60391 97432
720
720
+
70047 20185
721
721
+
12372 73527
722
722
+
46501 29274
723
723
+
66552 14746
724
724
+
56373 51614
725
725
+
95596 11782
726
726
+
81196 72623
727
727
+
32282 60515
728
728
+
49504 14393
729
729
+
57642 34348
730
730
+
95402 87987
731
731
+
81625 68830
732
732
+
28527 37199
733
733
+
71475 31808
734
734
+
94280 23005
735
735
+
55623 99355
736
736
+
46783 29073
737
737
+
36641 81559
738
738
+
74788 14535
739
739
+
87994 78773
740
740
+
80189 77868
741
741
+
33263 89795
742
742
+
23537 23537
743
743
+
25755 22264
744
744
+
67413 72800
745
745
+
74924 73774
746
746
+
81215 78294
747
747
+
78206 92869
748
748
+
36161 50141
749
749
+
54925 86995
750
750
+
66305 49951
751
751
+
42462 28090
752
752
+
99051 88912
753
753
+
44954 89795
754
754
+
88856 28090
755
755
+
63026 85778
756
756
+
22651 24813
757
757
+
39262 14475
758
758
+
86176 69982
759
759
+
65395 14393
760
760
+
12926 78294
761
761
+
81994 53324
762
762
+
16933 30191
763
763
+
46987 19794
764
764
+
37215 28090
765
765
+
15340 63748
766
766
+
40271 86674
767
767
+
23747 52856
768
768
+
61156 11644
769
769
+
65356 56048
770
770
+
72336 51278
771
771
+
21864 77868
772
772
+
99351 13349
773
773
+
24599 79046
774
774
+
62281 23361
775
775
+
81871 53324
776
776
+
14029 42297
777
777
+
50141 48720
778
778
+
46677 43636
779
779
+
10745 35965
780
780
+
39344 80864
781
781
+
38077 50038
782
782
+
13983 89795
783
783
+
66663 67877
784
784
+
64175 19028
785
785
+
62355 68830
786
786
+
96823 79443
787
787
+
46436 44754
788
788
+
53388 68830
789
789
+
45987 92723
790
790
+
87646 11707
791
791
+
75997 45545
792
792
+
69968 93653
793
793
+
30425 44529
794
794
+
83211 88109
795
795
+
28725 64932
796
796
+
47043 89795
797
797
+
34475 31274
798
798
+
42302 94895
799
799
+
66558 92753
800
800
+
48964 50713
801
801
+
19546 78294
802
802
+
51026 89795
803
803
+
89346 57408
804
804
+
52993 54676
805
805
+
29577 38385
806
806
+
85932 60320
807
807
+
18030 22556
808
808
+
65993 19922
809
809
+
74692 23559
810
810
+
61588 89795
811
811
+
50688 69541
812
812
+
93760 44529
813
813
+
75094 96101
814
814
+
68976 86835
815
815
+
46278 50980
816
816
+
97836 44529
817
817
+
17576 32708
818
818
+
48519 46071
819
819
+
72647 93653
820
820
+
54724 34155
821
821
+
45186 43448
822
822
+
44529 41828
823
823
+
90404 86357
824
824
+
63175 44529
825
825
+
88381 25963
826
826
+
32140 23537
827
827
+
43348 36423
828
828
+
41733 88912
829
829
+
84065 98953
830
830
+
20389 96101
831
831
+
38749 93788
832
832
+
37929 35143
833
833
+
63747 35340
834
834
+
72249 93653
835
835
+
98042 59381
836
836
+
22741 95783
837
837
+
88124 33425
838
838
+
16493 44529
839
839
+
36599 69408
840
840
+
50436 41563
841
841
+
67695 86149
842
842
+
89091 20022
843
843
+
60708 92607
844
844
+
28750 68830
845
845
+
80224 39113
846
846
+
34580 96101
847
847
+
79688 34798
848
848
+
14870 68189
849
849
+
47719 29252
850
850
+
57652 33458
851
851
+
65541 87987
852
852
+
86435 19794
853
853
+
95204 81239
854
854
+
43800 50980
855
855
+
94063 11644
856
856
+
24096 36588
857
857
+
36628 95478
858
858
+
81443 17329
859
859
+
61221 57166
860
860
+
52782 78294
861
861
+
16740 31274
862
862
+
68369 45653
863
863
+
28895 44529
864
864
+
39222 65582
865
865
+
97201 77602
866
866
+
81119 11644
867
867
+
41083 50141
868
868
+
72917 25255
869
869
+
46148 21269
870
870
+
44495 18020
871
871
+
99464 90525
872
872
+
67254 58381
873
873
+
52750 28135
874
874
+
63899 55754
875
875
+
14617 50713
876
876
+
36962 50713
877
877
+
41322 73436
878
878
+
22504 38709
879
879
+
72577 39875
880
880
+
67799 68830
881
881
+
68284 71156
882
882
+
46011 61967
883
883
+
50367 31808
884
884
+
45832 87987
885
885
+
88775 87987
886
886
+
32562 26340
887
887
+
43756 49887
888
888
+
73444 16547
889
889
+
67302 92449
890
890
+
22133 85451
891
891
+
17768 77868
892
892
+
69281 39885
893
893
+
87364 25255
894
894
+
41209 27363
895
895
+
37792 77868
896
896
+
66667 73746
897
897
+
22195 28090
898
898
+
65037 37556
899
899
+
28634 89795
900
900
+
23901 50674
901
901
+
40511 95801
902
902
+
47779 45253
903
903
+
76489 86807
904
904
+
77873 66992
905
905
+
87523 35509
906
906
+
32876 50980
907
907
+
62342 50980
908
908
+
84222 41563
909
909
+
88205 40382
910
910
+
78856 20051
911
911
+
97888 68189
912
912
+
22233 17329
913
913
+
35868 81437
914
914
+
80155 93653
915
915
+
82730 78294
916
916
+
12733 19794
917
917
+
55038 26258
918
918
+
50682 23250
919
919
+
42043 74279
920
920
+
54719 71512
921
921
+
54474 23991
922
922
+
61776 25255
923
923
+
55564 41563
924
924
+
39404 31274
925
925
+
94954 14475
926
926
+
76258 89795
927
927
+
87689 67995
928
928
+
65619 59930
929
929
+
41846 17435
930
930
+
21990 22185
931
931
+
60161 53026
932
932
+
44955 57523
933
933
+
84178 39875
934
934
+
32693 87987
935
935
+
19125 44529
936
936
+
96731 93653
937
937
+
98080 44529
938
938
+
72947 95746
939
939
+
67285 23344
940
940
+
78101 77580
941
941
+
43064 11644
942
942
+
81350 23483
943
943
+
46937 11644
944
944
+
97686 79381
945
945
+
66339 60744
946
946
+
39269 50674
947
947
+
61837 77868
948
948
+
97647 86995
949
949
+
44613 93568
950
950
+
73127 68830
951
951
+
64048 80370
952
952
+
15530 87987
953
953
+
63926 51860
954
954
+
95853 91981
955
955
+
26155 28090
956
956
+
82222 19794
957
957
+
10035 87445
958
958
+
16445 93653
959
959
+
67972 15558
960
960
+
51780 68830
961
961
+
52358 31274
962
962
+
83942 60096
963
963
+
64899 11955
964
964
+
56009 96101
965
965
+
42288 36590
966
966
+
53349 65322
967
967
+
76255 50713
968
968
+
53044 26351
969
969
+
37184 31274
970
970
+
24813 19028
971
971
+
62309 52490
972
972
+
93607 19028
973
973
+
27423 45568
974
974
+
26128 78294
975
975
+
72691 50141
976
976
+
42162 60052
977
977
+
78247 10613
978
978
+
80209 31808
979
979
+
38310 93653
980
980
+
59228 47607
981
981
+
24897 23559
982
982
+
55176 37760
983
983
+
33062 53324
984
984
+
26521 39170
985
985
+
93209 68189
986
986
+
89881 23559
987
987
+
11418 50980
988
988
+
16884 78294
989
989
+
31995 50980
990
990
+
17858 98671
991
991
+
49107 96101
992
992
+
50512 54526
993
993
+
56890 65322
994
994
+
76173 65309
995
995
+
51569 52845
996
996
+
73919 23537
997
997
+
62591 16739
998
998
+
53735 79935
999
999
+
14454 69804
1000
1000
+
19976 46609
+92
day_1/src/main.rs
···
1
1
+
#![feature(test)]
2
2
+
3
3
+
extern crate test;
4
4
+
5
5
+
use std::{collections::HashMap, fs};
6
6
+
7
7
+
fn part_1(left: &Vec<u32>, right: &Vec<u32>) {
8
8
+
let mut diff: u32 = 0;
9
9
+
for (i, l) in left.iter().enumerate() {
10
10
+
diff += l.abs_diff(right[i]);
11
11
+
}
12
12
+
13
13
+
println!("Part 1: {diff}");
14
14
+
}
15
15
+
16
16
+
#[derive(Debug, Clone, Copy)]
17
17
+
struct Occurences {
18
18
+
left: u32,
19
19
+
right: u32
20
20
+
}
21
21
+
22
22
+
fn part_2(left: &Vec<u32>, right: &Vec<u32>) {
23
23
+
let mut mapped = HashMap::<u32, Occurences>::new();
24
24
+
for (_, l) in left.iter().enumerate() {
25
25
+
let v = &mut mapped.get(l).unwrap_or( &Occurences { left: 0, right: 0 });
26
26
+
mapped.insert(*l, Occurences { left: v.left + 1, right: v.right });
27
27
+
}
28
28
+
for (_, r) in right.iter().enumerate() {
29
29
+
let v = &mut mapped.get(r).unwrap_or( &Occurences { left: 0, right: 0 });
30
30
+
mapped.insert(*r, Occurences { left: v.left, right: v.right + 1 });
31
31
+
}
32
32
+
33
33
+
let reduce = mapped.iter().map(
34
34
+
|(num, occurences)| {
35
35
+
num*occurences.left*occurences.right
36
36
+
}
37
37
+
);
38
38
+
39
39
+
let similarity: u32 = reduce.sum();
40
40
+
41
41
+
println!("Part 2: {similarity}");
42
42
+
}
43
43
+
44
44
+
fn parse_input() -> Option<(Vec<u32>, Vec<u32>)> {
45
45
+
let input = fs::read_to_string("./input.txt").expect("Couldn't read file");
46
46
+
47
47
+
let (mut left, mut right) = input.lines().map(
48
48
+
|l| {
49
49
+
let mut split = l.split_whitespace();
50
50
+
let left = split.next();
51
51
+
let right = split.next();
52
52
+
53
53
+
(
54
54
+
left.unwrap().parse::<u32>().unwrap(),
55
55
+
right.unwrap().parse::<u32>().unwrap()
56
56
+
)
57
57
+
}
58
58
+
).collect::<(Vec<_>, Vec<_>)>();
59
59
+
60
60
+
left.sort();
61
61
+
right.sort();
62
62
+
63
63
+
Some((left, right))
64
64
+
}
65
65
+
66
66
+
fn main() {
67
67
+
let (left, right) = parse_input().unwrap();
68
68
+
part_1(&left, &right);
69
69
+
part_2(&left, &right);
70
70
+
}
71
71
+
72
72
+
#[bench]
73
73
+
fn full(b: &mut test::Bencher) {
74
74
+
b.iter(|| main());
75
75
+
}
76
76
+
77
77
+
#[bench]
78
78
+
fn input_only(b: &mut test::Bencher) {
79
79
+
b.iter(|| parse_input());
80
80
+
}
81
81
+
82
82
+
#[bench]
83
83
+
fn part_one(b: &mut test::Bencher) {
84
84
+
let (left, right) = parse_input().unwrap();
85
85
+
b.iter(|| part_1(&left, &right));
86
86
+
}
87
87
+
88
88
+
#[bench]
89
89
+
fn part_two(b: &mut test::Bencher) {
90
90
+
let (left, right) = parse_input().unwrap();
91
91
+
b.iter(|| part_2(&left, &right));
92
92
+
}
+100
flake.lock
···
1
1
+
{
2
2
+
"nodes": {
3
3
+
"fenix": {
4
4
+
"inputs": {
5
5
+
"nixpkgs": [
6
6
+
"nixpkgs"
7
7
+
],
8
8
+
"rust-analyzer-src": "rust-analyzer-src"
9
9
+
},
10
10
+
"locked": {
11
11
+
"lastModified": 1732689334,
12
12
+
"narHash": "sha256-yKI1KiZ0+bvDvfPTQ1ZT3oP/nIu3jPYm4dnbRd6hYg4=",
13
13
+
"owner": "nix-community",
14
14
+
"repo": "fenix",
15
15
+
"rev": "a8a983027ca02b363dfc82fbe3f7d9548a8d3dce",
16
16
+
"type": "github"
17
17
+
},
18
18
+
"original": {
19
19
+
"owner": "nix-community",
20
20
+
"repo": "fenix",
21
21
+
"type": "github"
22
22
+
}
23
23
+
},
24
24
+
"flake-utils": {
25
25
+
"inputs": {
26
26
+
"systems": "systems"
27
27
+
},
28
28
+
"locked": {
29
29
+
"lastModified": 1731533236,
30
30
+
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
31
31
+
"owner": "numtide",
32
32
+
"repo": "flake-utils",
33
33
+
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
34
34
+
"type": "github"
35
35
+
},
36
36
+
"original": {
37
37
+
"owner": "numtide",
38
38
+
"repo": "flake-utils",
39
39
+
"type": "github"
40
40
+
}
41
41
+
},
42
42
+
"nixpkgs": {
43
43
+
"locked": {
44
44
+
"lastModified": 1733064805,
45
45
+
"narHash": "sha256-7NbtSLfZO0q7MXPl5hzA0sbVJt6pWxxtGWbaVUDDmjs=",
46
46
+
"owner": "NixOS",
47
47
+
"repo": "nixpkgs",
48
48
+
"rev": "31d66ae40417bb13765b0ad75dd200400e98de84",
49
49
+
"type": "github"
50
50
+
},
51
51
+
"original": {
52
52
+
"owner": "NixOS",
53
53
+
"ref": "nixpkgs-unstable",
54
54
+
"repo": "nixpkgs",
55
55
+
"type": "github"
56
56
+
}
57
57
+
},
58
58
+
"root": {
59
59
+
"inputs": {
60
60
+
"fenix": "fenix",
61
61
+
"flake-utils": "flake-utils",
62
62
+
"nixpkgs": "nixpkgs"
63
63
+
}
64
64
+
},
65
65
+
"rust-analyzer-src": {
66
66
+
"flake": false,
67
67
+
"locked": {
68
68
+
"lastModified": 1732633904,
69
69
+
"narHash": "sha256-7VKcoLug9nbAN2txqVksWHHJplqK9Ou8dXjIZAIYSGc=",
70
70
+
"owner": "rust-lang",
71
71
+
"repo": "rust-analyzer",
72
72
+
"rev": "8d5e91c94f80c257ce6dbdfba7bd63a5e8a03fa6",
73
73
+
"type": "github"
74
74
+
},
75
75
+
"original": {
76
76
+
"owner": "rust-lang",
77
77
+
"ref": "nightly",
78
78
+
"repo": "rust-analyzer",
79
79
+
"type": "github"
80
80
+
}
81
81
+
},
82
82
+
"systems": {
83
83
+
"locked": {
84
84
+
"lastModified": 1681028828,
85
85
+
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
86
86
+
"owner": "nix-systems",
87
87
+
"repo": "default",
88
88
+
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
89
89
+
"type": "github"
90
90
+
},
91
91
+
"original": {
92
92
+
"owner": "nix-systems",
93
93
+
"repo": "default",
94
94
+
"type": "github"
95
95
+
}
96
96
+
}
97
97
+
},
98
98
+
"root": "root",
99
99
+
"version": 7
100
100
+
}
+35
flake.nix
···
1
1
+
{
2
2
+
description = "A basic flake with a shell";
3
3
+
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
4
4
+
inputs.flake-utils.url = "github:numtide/flake-utils";
5
5
+
inputs.fenix = {
6
6
+
url = "github:nix-community/fenix";
7
7
+
inputs.nixpkgs.follows = "nixpkgs";
8
8
+
};
9
9
+
10
10
+
outputs = { nixpkgs, flake-utils, fenix, ... }:
11
11
+
flake-utils.lib.eachDefaultSystem (system:
12
12
+
let
13
13
+
pkgs = import nixpkgs {
14
14
+
inherit system;
15
15
+
overlays = [ fenix.overlays.default ];
16
16
+
};
17
17
+
in
18
18
+
{
19
19
+
devShells.default = pkgs.mkShell {
20
20
+
packages = [
21
21
+
(pkgs.fenix.complete.withComponents [
22
22
+
"cargo"
23
23
+
"clippy"
24
24
+
"rust-src"
25
25
+
"rustc"
26
26
+
"rustfmt"
27
27
+
"rust-analyzer"
28
28
+
])
29
29
+
pkgs.bacon
30
30
+
pkgs.pkg-config
31
31
+
pkgs.openssl
32
32
+
];
33
33
+
};
34
34
+
});
35
35
+
}