summaryrefslogtreecommitdiffstats
path: root/2022/day1
diff options
context:
space:
mode:
Diffstat (limited to '2022/day1')
-rw-r--r--2022/day1/input2244
-rw-r--r--2022/day1/part1/Cargo.toml9
-rw-r--r--2022/day1/part1/example14
-rw-r--r--2022/day1/part1/src/main.rs14
-rw-r--r--2022/day1/part2/Cargo.toml9
-rw-r--r--2022/day1/part2/example14
-rw-r--r--2022/day1/part2/src/main.rs21
7 files changed, 2325 insertions, 0 deletions
diff --git a/2022/day1/input b/2022/day1/input
new file mode 100644
index 0000000..7be633e
--- /dev/null
+++ b/2022/day1/input
@@ -0,0 +1,2244 @@
18890
213468
35519
44939
5
64580
73529
82917
91329
104004
113553
125457
131907
142515
154055
164626
173776
181982
192967
20
2110118
222688
234629
243054
253911
266680
276988
286471
29
302836
317494
327963
338528
348732
351743
364794
371685
381406
392575
40
417606
4211935
434792
447040
458684
461131
473000
48
495799
504398
513837
522155
531889
545560
556684
562045
571194
581280
594009
606944
614754
62
633932
6410114
659039
6610597
676889
685807
698786
705376
71
725666
738741
742305
753914
764521
776449
786590
795933
802765
81
821417
833584
843304
855605
866249
873195
885905
895308
903920
912912
924028
932897
944737
956224
96
974498
986139
996716
1009309
1016210
1024120
1036244
1049313
1053275
106
1075602
1084336
1095174
1104592
1113676
1126700
1131903
1144623
1155393
1163743
1172397
1185207
1193445
120
1212219
1223393
1234442
1245142
1254466
1266851
1271877
1284005
1294792
1301370
131
13211433
13310337
13411711
1354342
1366693
1372626
1386245
139
14010039
14111192
1427335
14313284
14413507
145
1461989
1475218
1484411
1494440
1503563
1511714
1523617
1533068
1541167
1551222
1563567
1573888
1582634
1592289
1603410
161
1626518
1635391
16412964
16513103
1669070
1679803
168
16922560
170
1714229
1722789
1732219
1741940
1752848
1764053
1775849
1785518
1791088
1806297
1816603
182
1832889
1843452
1854254
1863624
1874293
1881511
1895150
1902890
1915834
1926345
1936399
1941164
1953561
196
19746632
198
19919171
200
2012510
20221303
20315390
204
20554375
206
20722699
20836690
209
2102240
2113329
2123299
2135978
2144641
2153499
2163515
2174915
2184613
2192785
2204757
2215394
2222339
2232574
2245073
225
2261321
2273132
2285429
2295664
2304451
2311397
2323284
2336077
2344117
2354818
2364430
2373163
2382432
2393894
240
2416726
2422851
2439582
244
24532549
246
24717153
24818102
24911467
25020051
251
2527167
2534819
2544283
2551900
2561524
2573228
2581712
2597107
2607453
2611137
2621927
2633876
264
26514437
2667952
267
2685253
2697062
2701107
2715023
2722353
2737335
2742819
2754925
2762439
2775186
2783602
2792016
280
2814129
28226383
283
2843665
2855169
2866365
2874399
2883518
2892176
2906185
2911150
2921490
2933818
2946223
2952104
2964006
2971142
298
2991138
30011986
3015920
3026371
3037888
3048197
30510859
306
3074338
3084292
3091523
3101044
3112498
3122514
3133160
3145049
3152113
3165867
3171916
3185458
3194686
3202012
3215455
322
32315587
324
3254040
3264077
3275272
3284914
3296755
3306297
3312240
3321925
3332940
3342346
3355688
3365501
337
3381476
3394270
3401252
3414783
3423661
3435353
3444596
3455400
3465916
3471685
3483307
3493915
3505624
3511371
3522001
353
35442703
355
3561250
3572902
3586414
3596487
3606368
3611200
3622759
3633307
3645551
3651216
3664097
3673174
3683758
3692470
370
3714997
3721199
3734598
3742443
3752931
3764287
3771606
3785156
3794750
3804117
3812487
3823399
3834283
3844991
3854441
386
3871789
388
3894379
39010889
3916020
3921102
3935043
39410061
39511276
396
3977586
39813962
399
40010039
4012029
402
4032150
4042431
4053646
4064601
4075105
4084254
4095469
4105844
4116856
4124529
4133557
4143043
4154944
416
4176797
4181605
4196624
4204966
4211452
4222260
4236281
4243273
4255754
4266576
4276326
4286391
4294892
430
4319772
43216686
4331032
43414594
435
4362978
4374118
4382292
4396107
4407428
4412954
4423516
4432464
4444726
4455438
4463292
4472812
448
4496953
4507372
4515775
4527550
4538449
4547315
4552872
4562442
457
4582581
4597301
4601256
4613467
4622348
4636254
4645231
4653225
4668275
467
4683065
4694110
4705259
4718646
4724515
4737431
4747086
4753650
4762445
477
4785714
4794659
4806401
4811647
4827071
4831302
4848529
4851570
4867288
487
48849901
489
4906687
4911879
4924661
4936048
4946920
4955048
4961537
4973786
4981634
4993274
5004277
5012712
5022647
503
5045597
5054194
5064058
5075329
5082484
5093420
5102607
5112953
5122580
5131093
5142609
5152299
5164805
5173426
5184101
519
5202833
5216833
5221455
5239758
5242307
5253045
52610558
527
5283380
5294149
5308715
5315262
5327564
5339620
5343331
5356581
5367674
537
5383389
5392996
5401250
5419915
5421731
5437254
5443784
54510198
546
5474210
5486612
5496253
5506874
5515858
5524349
5534845
5541119
5554695
5564496
5576276
5584234
5596679
560
56116077
5626437
56318269
56414173
565
56619739
5675489
5683345
5695798
570
5714150
5725984
5735293
5745741
5753166
5765279
5775244
5785215
5795010
5803367
5811828
5824310
5834335
5843973
585
5862144
58712157
5889069
5891615
5901826
5917195
592
59312924
5946962
59511433
5963150
5977863
5987387
599
6003113
6013604
6027814
60310587
6043098
60510913
606
6074513
6089048
60910027
6103587
6117837
6123906
6132299
614
6154370
6166152
6175473
6185866
6195358
6204265
6214487
6226664
6232347
6246075
6251481
6264074
6271962
628
6297409
6307332
63111378
6327740
6338090
6343036
6351310
636
6378351
6386202
6391420
6409306
6417410
64211169
6439201
644
6456951
6462037
6478682
6485075
6499709
6504678
6518347
652
65310537
65413081
6555447
6568707
65711933
658
65910454
6602543
66110319
6628133
6632072
6649299
6651929
666
6677770
6684904
6698452
6708625
6717675
6724126
6731015
6744921
6758517
6762709
677
67810877
6797192
6809475
6814555
6825625
6835261
6845756
685
6866150
6879451
68811426
68911464
6906334
69110003
6928686
693
6941959
6951711
6965018
6974235
6984920
6994257
7002511
7012572
7021347
7031871
7042102
7054203
7066334
707
70812058
7098690
7101875
7117697
71212351
7137669
714
71532887
716
71731015
718
7196024
7202966
7213311
7227248
7236280
7244727
7256071
7266771
7271599
7281958
7297649
730
7319066
73213179
7331857
73412410
7351404
73611676
737
7386262
7397283
7404418
7411207
7427099
7432798
7446994
7455267
7467810
7476521
748
7497144
7503828
7515528
7524676
7532311
7546429
7557064
7566601
7572846
7581611
7593188
760
7614151
7626232
7635706
7647003
7653470
7668349
7678189
7684137
769
7703055
7716091
7722008
7735977
7741909
7751192
7762149
7772983
7781219
7791025
7801537
7812635
7825461
7835570
7845620
785
78625514
787
78819363
78916402
790
7916908
7924670
7933407
7944541
7955027
7965640
7971008
7985737
7992336
8002994
8013908
802
8032788
8045117
80518397
8065362
807
8082285
8091597
8101556
8111505
8121317
8131136
8143387
8154936
8166798
8177103
8185537
819
8207045
8214354
8226071
8236734
82411077
8255863
8267177
827
8285625
8293990
8306473
8313191
8321023
8333673
8342520
8355998
8362726
8375421
8381907
8397129
840
8411302
8421703
8436858
8441329
8451933
8463438
8474088
8487955
849
8508593
851
8526686
8533483
8545829
8552240
8566810
8572964
8585400
8593826
8604753
8615525
8625395
8635127
8646010
865
8669254
86737116
868
8691487
87018037
8719573
87214918
873
8746570
8753119
8761689
8773785
8784436
8796237
8804394
8814042
8821242
8837143
8841621
8855211
886
8873851
8881651
8892177
8905699
8914866
8925048
8935174
8941271
8953971
8962695
8971051
8981670
8991372
9003959
9011264
902
9038039
9041858
9059989
9068870
9077618
9085662
909
9101059
9118999
9122214
9135310
9148052
9155807
9161963
9174282
9188489
919
9201444
9212736
9223879
9232437
9243539
9253657
9262351
9274513
9284299
9294166
9305665
9314164
9323622
9331907
934
9353638
9364328
9374562
9383285
9393200
9405909
9412542
9425197
9435104
9443570
9454323
946
9471631
9482406
9492788
9501838
9514639
9522469
9536718
9543731
9552375
9564325
9573952
9581012
9591076
960
96110733
9629085
9635074
9649984
9659990
96610107
9679274
96810464
969
97013249
97110020
9724881
97312806
97411865
975
9769852
9776248
9784916
9797066
9805297
9815475
9826530
98310364
984
9852415
9865519
9872200
9883556
9895815
9902426
9916180
9922142
9936627
9947369
9956353
9964170
997
9985507
99915832
100015699
100110635
10027997
1003
10041742
10054641
10064628
10074867
10088860
10091133
10103575
10117128
10128774
1013
10142808
10156117
10163760
10171327
10181224
10194959
10205456
10212801
10225944
10231961
10241194
10253734
10262937
10273793
10281888
1029
103021943
103135720
1032
10336563
10345000
10351710
10364021
10373273
10386155
10393198
10403661
10416309
10422331
10431631
10445646
10455734
1046
10479646
10483457
10498620
10505965
10513440
10526433
10531753
10549062
10558301
1056
10579192
10583284
10599181
10608566
10613759
106210184
10638911
10646998
1065
106619491
106710283
106813574
106912306
1070
10712916
10729083
107313398
107413239
10754749
107612853
1077
10787223
10793154
10802911
10817004
10823110
10833584
10846619
10855960
10868429
1087
10885878
10894929
10904709
10914932
10923023
10931011
10942193
10954264
10965282
10971657
10984360
10996109
11005031
11013785
11025017
1103
110416065
11052923
110611281
1107
11087340
11093319
11105766
11111660
11127947
11137012
11142739
11151395
11168273
1117
11183887
11195538
11204771
11213770
11221504
11232681
11244066
11253406
11263487
11273098
11283611
11296234
11303449
1131
113212281
113311291
113411367
113510405
11364223
1137
113817411
11398453
1140
114136173
1142
11433431
11443627
11454047
11462512
11476628
11481229
11494812
11503961
11512389
11524747
11531799
11544291
1155
11562176
11577287
11586468
11593056
11609632
11611027
11623251
11631517
11641853
1165
11664727
11672417
11684544
11695949
11704289
11712237
11722861
11734284
11746912
11752843
11765773
11774423
1178
11793093
11806501
11811259
11824975
11834357
11842940
11852435
11862939
11871772
11883876
11895008
11902909
11915641
11925710
1193
11944559
11956522
11965781
11971343
11982062
11992392
12001852
12015135
12027668
12037240
12043028
1205
120611607
12079525
12087332
120911307
1210
12114941
12125277
12132311
12145738
12153029
12162709
12175448
12181724
12192982
12201082
12211515
12221854
12234762
12244514
12252015
1226
122751097
1228
12292814
12305593
12316576
123210591
12334809
12344469
12353790
12368186
1237
12387656
123910163
124019430
1241
12421928
12435626
12443418
12456785
12462781
12473549
12482884
12496656
12506210
12514950
12523598
12532669
12545185
1255
12568768
12575221
12587404
12599630
12603371
12619450
12621837
12633100
12644494
1265
12663987
12673179
12682415
12692074
12701172
12713192
12725874
12735869
12744404
12755842
12761987
12772526
12784094
1279
12805792
12816056
12821689
12835643
12844068
12852259
12861461
12871764
12883453
12892344
12906118
12915844
12922014
12931184
1294
129513505
12968242
12971358
12983817
129912030
130011105
1301
13027333
13039427
130410385
13053458
13066340
130710804
1308
13093152
13101364
13113371
13126000
13133032
13143326
13154046
13161890
13174321
13183986
13193309
13204021
13211683
13222198
13232003
1324
13252592
13268354
132713452
132812440
13297966
1330
13311593
13321143
13336246
13344105
13356164
13366425
13373904
13381143
13395966
13403100
13415215
13424256
13432090
13443413
1345
13464382
13476229
13482368
13491780
13505658
13511452
13526359
13531802
13543800
13556433
13563866
13573038
13584699
13594137
1360
13615395
13622426
13635621
13649156
13656250
13669008
13672966
13683226
13696709
1370
13715387
13727267
13736067
13746468
13755833
13765241
13777204
13781419
13796037
13805938
1381
13822390
13834300
13844787
13853656
13865976
13871879
13883964
13893314
13903076
13915158
13925612
13932846
13945231
1395
13962205
13973652
13985211
13991711
14002113
14015988
14021310
14035333
14042253
14052897
14065234
14073809
14083640
14092995
14102197
1411
14126695
14135930
14146118
14155463
14163750
14172440
14187006
14194073
14205663
14211369
14222721
14231961
1424
14255270
14264851
14275199
14281976
14294128
14305527
14312998
14321567
14336398
14344163
14351484
14366077
14373035
14383860
1439
14406698
14413081
14426805
1443
144413122
14454106
14466919
14476595
1448
14491608
14507971
145110279
14527856
14533503
1454
14557405
14566658
14573512
14583913
14596137
14602617
14612776
14628255
14637034
1464
14658368
14665163
14676566
14685481
14694059
147010560
1471
14725801
14735394
14742081
14752927
14761775
14771635
14781180
14795834
14807652
14812365
14826525
1483
14847192
148513806
148612580
14876935
14883136
14897820
1490
14912371
14927237
14935197
14941561
14952418
14961742
14975540
14987836
14991613
15004012
1501
150245767
1503
15046825
15056014
15067571
15073393
15082050
15098230
15104178
15115378
15124878
15135446
1514
15151412
15162156
15174877
15185604
15193149
15207585
15217922
15226811
15236971
15244493
1525
152612948
152732336
1528
15292512
153013073
153112030
153212851
15338951
1534
15353070
153610259
15372650
15386091
15395889
15404857
1541
15425483
15436813
15444208
15454999
15463708
15471955
15488588
15495416
15506235
15517920
1552
15532521
15547180
15557558
1556
15578285
15582208
15596058
15602839
15619653
15628078
15635862
15645711
15654847
1566
15673792
15681778
15693755
157013541
157112325
15729599
1573
15747431
15752814
15763828
15772468
15785499
15796822
15805190
15817279
15827939
15838488
1584
15855469
15863086
15878098
158812450
1589
15903182
15914307
15924150
15932802
15943857
15955331
15961045
15971111
15983983
15992606
16001077
1601
16023219
16032931
16044166
16052250
16065225
16071704
16083895
16096286
16101394
16115564
16121498
16133343
16145912
16152884
1616
16173874
16185309
16192941
16202109
16215322
16222994
16233922
16247538
16254666
16266223
16274754
1628
16294409
16306975
16318829
16324301
16331730
16342092
16352385
16361288
16379627
1638
16398849
16407371
16413259
16428823
16438963
16443901
16457003
16462250
16477492
1648
16497619
165016991
16517511
16525747
1653
16546361
16552401
16566509
16573429
16581276
16595120
16601852
16611706
16622373
16636117
16641967
16654655
16666193
1667
16683186
166910336
167012548
16717692
16721422
16737148
1674
16758898
167615230
16777468
16782349
16797214
1680
168118114
16827557
168310634
1684
16856755
16861045
16877326
16886511
16891691
16904966
16917367
16923305
16937083
16943105
16954262
1696
16976806
16988767
16996339
17004159
170111619
17028959
170310729
1704
17059070
17069027
17078532
1708
17092493
17101949
17115519
1712
17134637
17145893
17156617
17162710
17174712
17183514
17192828
17205131
17214756
17224772
17232488
17242540
17256593
1726
17274500
17289306
17293847
17308792
17314766
173210598
17335259
17341837
1735
17367936
17377125
17385091
1739
17404087
17416428
17423093
17435529
17442092
17455734
17461532
17471615
17485175
17494149
17506050
17512863
1752
175310505
175411702
175513870
17566381
1757
175812380
17596172
176016863
17619492
1762
17632406
17647906
17651139
17666866
17673963
17688280
17693315
17701645
17717885
17728315
1773
17742744
177510964
17769192
17776889
177811554
17794587
17805537
1781
178227485
17832819
1784
178567997
1786
17876372
17881910
17897440
17909638
17915161
17929354
17931063
17947999
17952712
1796
17976375
17986398
17992185
180011875
18011458
180211978
18039621
1804
18057326
18066319
18074988
18085326
18097844
18103876
18117311
18121920
18132865
18147959
18156890
1816
18175086
18183457
18193398
18206534
18215661
18221592
18234249
18241477
18253174
18263134
18276130
18282097
18295922
1830
18311854
18327848
183310289
18349261
18359692
18364814
18377798
18382634
1839
184013448
184110236
184211977
18434645
184412188
184511118
1846
18471681
18482162
18497349
18503198
18515725
18521151
18534940
18543481
18555896
18567245
18577424
18585630
1859
18603626
18613856
18624655
18631412
18642466
18655810
18664395
18671762
18684465
18693614
18703439
18716441
18724400
1873
18745037
18752450
18761870
18772191
18782145
18799754
18804259
18815762
1882
18839373
18843564
18857177
18861445
18878672
18884098
18896468
18901394
1891
18921675
18936754
18941996
18955894
18966449
18974644
18985642
18991338
19001087
19014989
19022467
19031192
19046368
1905
190634156
190712437
1908
19094394
19105648
19117691
19125598
19135720
19146414
191510089
19162116
1917
19189460
19192078
19207811
192113011
19225597
19231628
1924
19253772
19261201
19271174
19285884
19293720
19301120
19313830
19325809
19336269
19342548
19353212
19361924
19373951
19385178
1939
19401543
19417155
19425204
19437480
19449747
1945
19464029
194710517
19486776
19496978
19503517
19515746
19527683
19535939
1954
19555484
19561669
19571250
19583036
19593822
19605246
19611648
19625676
19631591
19641624
19653525
19664862
19672834
19685814
19694006
1970
19719610
197210230
19731473
19748541
19752163
19764706
19776919
197810514
1979
198046165
1981
19824618
19834867
19843750
19854578
19865498
19873468
19882663
19893003
19902777
19914434
19927386
1993
199418475
19955479
199615616
1997
19984810
19996199
20005905
20017014
20023903
20032404
20046955
20051290
20066328
20074729
20081567
20092070
2010
20111426
20126652
20137274
20143535
20151873
20168830
20176465
20183091
2019
202011667
20211824
20221749
2023
20246031
20251589
20266764
20275294
20282658
20297540
20302285
20315290
20323052
20334809
2034
20359275
20363219
20379205
20389367
20396695
20401620
20411418
20429589
20436985
2044
20454961
20461893
20474204
20484158
20492488
20506562
20516862
20527443
20535180
20546382
20555930
20562819
2057
20589225
205917113
20602562
206111634
2062
20639490
20645720
20652413
206613607
206712761
20684473
2069
207010788
207118449
20729511
2073
207411498
20753288
20769304
20774951
207810878
2079
208013888
208123233
208218690
2083
20845112
20859811
20869336
20874030
208811021
20893585
20901534
2091
20926026
20935618
20943065
20952909
20968887
20978052
20983524
20997783
21005793
2101
21023573
21035391
21041887
21056295
21063311
21078235
21083985
21092222
21102594
2111
21122807
21133623
21142622
21156466
21162272
21172181
21185550
21194568
21201172
21212579
21221020
21235542
21242653
21251080
2126
21274874
212810296
21295421
2130
21313743
21325053
21335510
21341401
21354173
21367968
21375999
21386482
21397019
21407916
21413752
2142
21438718
21447969
21456072
21463223
21475924
21482642
21498274
21501985
21513342
21522036
2153
21541706
21558655
21563521
21577502
21587955
2159
21601915
21615083
21621668
216311457
21642011
21659998
21669885
2167
216810592
216925078
217017582
2171
21722596
21732198
21748811
21757464
21765711
21777197
21788744
21795382
21806179
21813769
2182
21833713
21846012
21857951
218610750
21875580
21883426
218911019
2190
21915536
21927943
21935163
21947703
219514144
2196
21973169
21985475
21992367
22003666
22016042
22024279
22031699
22043129
22053294
22061813
22076465
22083591
22093332
22102155
2211
22121305
22139537
22149805
22152172
22168665
22178386
22187718
221910709
2220
22214645
22226242
22238462
22246619
22253165
22267797
22275664
22285058
22291339
22303749
2231
22323365
22335018
22343278
22353403
22364138
22374521
22381797
22393791
22401401
22413748
22426039
22431513
22442696
diff --git a/2022/day1/part1/Cargo.toml b/2022/day1/part1/Cargo.toml
new file mode 100644
index 0000000..f14fe90
--- /dev/null
+++ b/2022/day1/part1/Cargo.toml
@@ -0,0 +1,9 @@
1[package]
2name = "part1"
3version = "0.1.0"
4edition = "2021"
5
6# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7
8[dependencies]
9itertools = "0.10.5"
diff --git a/2022/day1/part1/example b/2022/day1/part1/example
new file mode 100644
index 0000000..2094f91
--- /dev/null
+++ b/2022/day1/part1/example
@@ -0,0 +1,14 @@
11000
22000
33000
4
54000
6
75000
86000
9
107000
118000
129000
13
1410000
diff --git a/2022/day1/part1/src/main.rs b/2022/day1/part1/src/main.rs
new file mode 100644
index 0000000..637b4e3
--- /dev/null
+++ b/2022/day1/part1/src/main.rs
@@ -0,0 +1,14 @@
1use itertools::Itertools;
2
3fn main() {
4 let input: String = include_str!("../../input").to_string();
5 let mut calories: Vec<usize> = Vec::new();
6
7 for (key, group) in &input.lines().group_by(|line| *line != "") {
8 if key {
9 calories.push(group.into_iter().map(|i| i.parse::<usize>().unwrap()).sum());
10 }
11 }
12
13 println!("{}", calories.iter().max().unwrap());
14}
diff --git a/2022/day1/part2/Cargo.toml b/2022/day1/part2/Cargo.toml
new file mode 100644
index 0000000..69fa504
--- /dev/null
+++ b/2022/day1/part2/Cargo.toml
@@ -0,0 +1,9 @@
1[package]
2name = "part2"
3version = "0.1.0"
4edition = "2021"
5
6# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7
8[dependencies]
9itertools = "0.10.5"
diff --git a/2022/day1/part2/example b/2022/day1/part2/example
new file mode 100644
index 0000000..2094f91
--- /dev/null
+++ b/2022/day1/part2/example
@@ -0,0 +1,14 @@
11000
22000
33000
4
54000
6
75000
86000
9
107000
118000
129000
13
1410000
diff --git a/2022/day1/part2/src/main.rs b/2022/day1/part2/src/main.rs
new file mode 100644
index 0000000..2a65d1a
--- /dev/null
+++ b/2022/day1/part2/src/main.rs
@@ -0,0 +1,21 @@
1use itertools::Itertools;
2
3fn main() {
4 let input: String = include_str!("../../input").to_string();
5 let mut calories: Vec<usize> = Vec::new();
6
7 for (key, group) in &input.lines().group_by(|line| *line != "") {
8 if key {
9 calories.push(group.into_iter().map(|i| i.parse::<usize>().unwrap()).sum());
10 }
11 }
12
13 println!(
14 "{}",
15 calories
16 .iter()
17 .sorted_by(|a, b| Ord::cmp(b, a))
18 .take(3)
19 .sum::<usize>()
20 );
21}