From 3aae838ef7f149d60c010bc9028d923bd7f6299e Mon Sep 17 00:00:00 2001 From: David Vereb Date: Thu, 1 Dec 2022 09:14:56 -0500 Subject: [PATCH] 2022 begins. --- 2021/14/data | 102 ++ 2021/14/example_data | 18 + 2021/14/main.py | 45 + 2021/14/main2.py | 45 + 2021/15/data | 100 ++ 2021/15/example_data | 10 + 2021/15/main.py | 12 + 2022/1/a.out | Bin 0 -> 94120 bytes 2022/1/data.txt | 2238 ++++++++++++++++++++++++++++++++++++++++++ 2022/1/main.cpp | 57 ++ 10 files changed, 2627 insertions(+) create mode 100644 2021/14/data create mode 100644 2021/14/example_data create mode 100644 2021/14/main.py create mode 100644 2021/14/main2.py create mode 100644 2021/15/data create mode 100644 2021/15/example_data create mode 100644 2021/15/main.py create mode 100755 2022/1/a.out create mode 100644 2022/1/data.txt create mode 100644 2022/1/main.cpp diff --git a/2021/14/data b/2021/14/data new file mode 100644 index 0000000..9c69fce --- /dev/null +++ b/2021/14/data @@ -0,0 +1,102 @@ +ONHOOSCKBSVHBNKFKSBK + +HO -> B +KB -> O +PV -> B +BV -> C +HK -> N +FK -> H +NV -> C +PF -> K +FV -> B +NH -> P +CO -> N +HV -> P +OH -> H +BC -> H +SP -> C +OK -> F +KH -> N +HB -> V +FP -> N +KP -> O +FB -> O +FH -> F +CN -> K +BP -> P +SF -> O +CK -> K +KN -> O +VK -> C +HP -> N +KK -> V +KO -> C +OO -> P +BH -> B +OC -> O +HC -> V +HS -> O +SH -> V +SO -> C +FS -> N +CH -> O +PC -> O +FC -> S +VO -> H +NS -> H +PH -> C +SS -> F +BN -> B +BF -> F +NC -> F +CS -> F +NN -> O +FF -> P +OF -> H +NF -> O +SC -> F +KC -> F +CP -> H +CF -> K +BS -> S +HN -> K +CB -> P +PB -> V +VP -> C +OS -> C +FN -> B +NB -> V +BB -> C +BK -> V +VF -> V +VC -> O +NO -> K +KF -> P +FO -> C +OB -> K +ON -> S +BO -> V +KV -> H +CC -> O +HF -> N +VS -> S +PN -> P +SK -> F +PO -> V +HH -> F +VV -> N +VH -> N +SV -> S +CV -> B +KS -> K +PS -> V +OV -> S +SB -> V +NP -> K +SN -> C +NK -> O +PK -> F +VN -> P +PP -> K +VB -> C +OP -> P diff --git a/2021/14/example_data b/2021/14/example_data new file mode 100644 index 0000000..6c1c3a1 --- /dev/null +++ b/2021/14/example_data @@ -0,0 +1,18 @@ +NNCB + +CH -> B +HH -> N +CB -> H +NH -> C +HB -> C +HC -> B +HN -> C +NN -> C +BH -> H +NC -> B +NB -> B +BN -> B +BB -> N +BC -> B +CC -> N +CN -> C \ No newline at end of file diff --git a/2021/14/main.py b/2021/14/main.py new file mode 100644 index 0000000..34a063b --- /dev/null +++ b/2021/14/main.py @@ -0,0 +1,45 @@ +str = '' +data = {} +letters = [] +with open('data', 'r') as fp: + for line in fp: + if(' -> ' in line): + pair = line.strip().split(' -> ') + data[pair[0]] = pair[1] + elif(len(line) > 1): + str = line.strip() + +for ch in str: + if(not ch in letters): + letters.append(ch) +letters.sort() + +# # DEBUG(dev): +# print(data) +# print(str) +# print(letters) + +for step in range(0, 40): + print('BEFORE:', str) + new_str = '' + for i in range(0, len(str) - 1): + lookup = str[i:i+2] + print(lookup) + if(lookup in data.keys()): + new_str += str[i] + data[lookup] + else: + new_str += str[i] + new_str += str[-1] + str = new_str + +counts = {} +for ch in str: + if(ch in counts): + counts[ch] += 1 + else: + counts[ch] = 1 + +counts_list = list(counts.values()) +counts_list.sort() + +print(counts_list[-1] - counts_list[0]) diff --git a/2021/14/main2.py b/2021/14/main2.py new file mode 100644 index 0000000..d29517c --- /dev/null +++ b/2021/14/main2.py @@ -0,0 +1,45 @@ +str = '' +data = {} +letters = [] +with open('data', 'r') as fp: + for line in fp: + if(' -> ' in line): + pair = line.strip().split(' -> ') + data[pair[0]] = pair[1] + elif(len(line) > 1): + str = line.strip() + +for ch in str: + if(not ch in letters): + letters.append(ch) +letters.sort() + +# # DEBUG(dev): +# print(data) +# print(str) +# print(letters) + +for step in range(0, 40): + new_str = '' + for i in range(0, len(str) - 1): + lookup = str[i:i+2] + if(lookup in data.keys()): + new_str += str[i] + data[lookup] + else: + new_str += str[i] + new_str += str[-1] + str = new_str + print('Step ', step+1, ', length', len(str)) + + # NOTE(dev): un-indent this (take it out of the for loop) for just a final answer + counts = {} + for ch in str: + if(ch in counts): + counts[ch] += 1 + else: + counts[ch] = 1 + + counts_list = list(counts.values()) + counts_list.sort() + + print(counts_list, counts_list[-1] - counts_list[0]) diff --git a/2021/15/data b/2021/15/data new file mode 100644 index 0000000..ef64dc1 --- /dev/null +++ b/2021/15/data @@ -0,0 +1,100 @@ +9165985876154699219988192797299938946759548993842382179897895847959995468789384779887969965834298757 +9998264799399739852669159899969915752881369928979589425659869512849898348591988899941938989958981368 +8899439372928798295981284899995498957198997822776999766989269673341115866632499916582179985999797178 +9421373314798816327241583824298987799745811978869899899899999689988933652499891999899718759652641398 +9949959989598519929632977671926983547787167773939739198988988851889519228348573848979828599971727943 +2989192448779756984992587956689999842746119939998567894718899918799954281648927282191699499764931166 +9536499426969676189784443598979559899499773119978188394689557995599331996979736693529419681251956996 +1751936936954979779895998917863998697858138691879749999727789764741997539275579593798975539798818972 +7274746616894977772987689459988988891794769772199789185982726479992789563994126143759648659653627929 +9768211178649269995923493912176968666679999859829913848396992289798892197419967914777851877899477278 +9548265381888989898295865115497574817515178999881998168798969539989897979118423366393898169329939816 +5346816194398971492996938739782725986596757996472498951666679779287752997484725936582558299359964812 +2169889968977588483272986596967998729999883958728879796999737989942928997399898577324799379798165679 +5756791285489939716695977945746649394898965799971791856215827997699758829299499895496993375817688889 +1189911823962199612255959754716953775367595418858921381973577497988994381699599376948136788285998274 +6979939299876267486998569159464199464965974658469723835541132825855912999935783995325776519991867869 +7829881839997878488734339898145124968389716637926975397882799631985728918519668146942356911683694975 +4973997156985297758563699888285794535932928974966978296562139199889893476728999942416259889912711471 +9534797994999788999759474799734844192166842694971197691854895641895188586895455192589986798997913693 +2819784988295365719599997589858664998979399989735399884134499895873389479651295996498866989999839974 +6129944129969453989699888866976269999128469799982997963676678293639494188967181417362922546475281598 +9716591619494494558731969871917781639763288288691962634219628479989988828962651246459129568974491171 +7894482759988943587818779691955666934841799931371572868778856815865991124376396974593984947897442991 +1858394839149329949299818139987736884848178995897668499996188998667699618978779495959989927996996397 +9917119977481935978699197129381282957978683881779735689583195993458959989897975199999285945815997999 +1699128644295779552889817864638995225998895287579281281998594696644213479297199692979781937997179875 +8289472999575769888986161678994171392789714988719932799199558696689379278929798887977551878788398787 +9175199787918919864185866129967892999898318993291829953849829788999738939999469848949591989149962712 +6199185639948988878676462732119197225882925435874993975768952939825978994996892549999699984912695356 +3396488583898545189449831859997919671368765298895692847986994925119921865818912189499168979958896494 +9938398336984195997576689194134985999635325783571526493894394589917988793989755746999698829649589393 +6985999497989855798918845568728129349777627978979362788359497952698956998292996918648692699694349887 +1983998898992942689898989791697792913121476987631657959299998868769559979688918876893688862439185197 +7357776772998794811999929459919571597899775797198394831478974157594549666253368399586349899987699999 +7959339994696971922632949191545959757987989979787788169979748972545188912811999284691666989915589771 +9759961834557989443271499976572889278289319995879484972649589489199519573998999779383692242897767588 +9179641759649515678926897874488858988897787895855979191899776967749898123692484838554413919817918963 +6839761379993114699928685489349481791394595895995488717149328139993956495742445794747189959976877649 +7719888678899926948979191678165949542927483596385943836398298659699148778343914768999898197267997991 +8769727958885176392169934146934172488871783986753744485932511888999799159194751538987186924419884479 +8991999992999929999897984599767977994699827768813861298818993288386943869782797583698682188885283399 +7618891897968939798498999399278379698962758659288163913969875574557443483997692961986999939899819481 +8879168556577788339549879912587944289995777798881688244889799389891799876819699576957557971877898128 +9291695492736749179768777989972456198819896897386591181956469899994155718299785968686938589318979479 +7795999789358882518386787487224292238877893956695912892699678996798249199324897986249725799479399977 +7157587585956489829119899759896997988918879818491999931184192141949199172799356679472486896195864474 +8369998998796539973399979987949986863639829688617494995142799799778639869918868177475771699198897648 +6597979998999646797717999135983617949772192975367951599248888799957499785994774771558359664883693989 +8494399497884369731998936499887638658943929616778716995355827188745777858983426799559721799739362629 +7988688889359569698815957687229757873596999199938929146584679599188685439814466838789683219554419476 +9247298485768968989794782295879689497761879956994316114992795924987262939579993889586584967699911179 +9585318399982677997578979671589977319169586337196999959189521499887711992343851295981988819951696391 +9688419987598317988779256198579659993398274893319912676925791429994831998147985462785322692958417991 +9162526572947889939619891135679859992512868978725888837198497899147199825914711544192984934699878858 +9997992172487298739215471619688889939819838188921969391991648949979166298795194179866892977317488668 +4342969513889787361777751972798659462495119377122327857968869995779944989446988786669168689799978198 +9991989792887933999782849992885388199539897175961949179928388186994694998865752811971681796835228899 +9689884899572994167989994913659819996941825788877898819911788969419991277989227389959829597962878797 +9919879157714445923163829999735888889724892834556637899899999974386932299127993655996239789769999544 +8158429263197997788393974998999939783878693949897825898975995959979986635699272784592895953298769979 +6933156399191389719992767671896649494989689977121886269912939799779176467784638649979932992778611947 +9937886748328953482685979758934658999819989845699372899934596991259755741819979779889881397565568579 +6628287411551868899648999511774894539834357749799788481594933187788979179772699757813897655969637759 +1681758889993977881987844998586378799289969999542735618971489988849699628668119898999679199493949189 +7756952966791755589777886975949697297729368719914568929921989979278297994486928996985666791996513546 +7959939142776881868999785876799728991368773296952962918971941199687791336941297836969992566198117899 +9919799591383641992451999795686291882995991159937526287799259396499782592953878378919512331399769295 +9979988697799299993248298599458499952548969526718987894849849961566959196296836979299696595499951269 +8989115299788834687596939899183482448889849883899881337161943668283395379982966119363885868799817686 +3917979748934696925996487991958936699899582264499928897937594999993391587881813378359971812919779972 +7798825938413749319999785941489868587674397449269738978317389938919984622199581498529938819682972471 +7749948181969657924978787838596695869966969369158962427829991499668977295896254897998989743989952389 +6398998955793159938819887788968371888968395499298999755899949268632898528951445886293997299392969779 +9539983773686993498991392899889572558299175987819981797981886747694169489893727157979378595839496298 +9599999287193787789729986389617989992374479972959749982818939999895692869845931449861767839389829149 +4889176836968695418797941267779399488818276299865898498649489796971967884999112828966259271689857259 +7139139187955994831738585298962698949981181887589699969919418116293969946431635243579918986885919619 +7935837589876972417397869798312741789988882795986987744696696629647813993997762979599189148298958581 +8791284382878199766798982957837371997961791491996313339915819373928948979938596612197699691473969914 +1372974376943738718696489825854989786382983999879965536283589995655483569334269859559761199879679291 +9719671746885959293824693968698399315424948599622489865269469961617669916732853892695261177787994496 +7849319899791243818799879975258532467699699999398269787199341236894749619399991856788917729181194197 +9148263323757681139949799197198549259446781912979561927929891898923997238737858757915394778591127667 +1945591989843987198391756487965892217958111951642219915715439797998675786222936815998966826782589594 +5254778838276178988551266998775337643868756772978159294191819424888551874271745598136847865594999289 +3998557499888479397893111869792537426834985941959185929798919875628859952429849886849639853349182496 +8958877677623879221669563361998988956937492798913659491897715599879989983979859984661929198589817564 +9989969281947994946512996153988898382127889834868897498898867797998892148557494839482788798269898496 +9779851919689459958899912662756981619298821434879339749956713988385759469959788279765789991925947918 +4196471827218751217999955385399979199189581896987488518319752529829892282899638773984698854832217793 +5968399569814182278918739959691249997958587277596698779311494824187981838837892479347738267879912541 +8659894118598996577145167494795592898597175979829589886499183913197276893979278479678988218798894991 +6649277899864442637895792699719172999998662937819979979769821897696686788719291967114346689819212978 +6699889979874997773889958977455779952988466968759738452847569993821963796198741514377779188577811889 +1173976886399735895884999486498511998399588328832288555979166889776686858695414825689877994898917949 +9629147139882191719857926675389957799296279989442991999622669639755767892922474778888299984452999898 +4391879947595258989144156986799899833458894496218777872997391217987623967998848296898891312888421579 +9362699299759899879589911968947655251988997896874791778876389919939496782959848979971163281597161779 +1652179878596567755189593919723287659886989991199789326995581692999815373488857495418291969165215199 +9788389477191759669998798979888832998683445278988415997594187969167388689899997659918914818788982937 \ No newline at end of file diff --git a/2021/15/example_data b/2021/15/example_data new file mode 100644 index 0000000..7d9d562 --- /dev/null +++ b/2021/15/example_data @@ -0,0 +1,10 @@ +1163751742 +1381373672 +2136511328 +3694931569 +7463417111 +1319128137 +1359912421 +3125421639 +1293138521 +2311944581 \ No newline at end of file diff --git a/2021/15/main.py b/2021/15/main.py new file mode 100644 index 0000000..018b6dc --- /dev/null +++ b/2021/15/main.py @@ -0,0 +1,12 @@ +class Point: + shortest_path = [] + +data = [] +for line in open('example_data', 'r'): + data_row = [] + for ch in line.strip(): + data_row.append(ch) + data.append(data_row) + +for row in data: + print(row) diff --git a/2022/1/a.out b/2022/1/a.out new file mode 100755 index 0000000000000000000000000000000000000000..02001fdf15f47d8e2bf4a7b5fee14742bc520c1d GIT binary patch literal 94120 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 Y7Y$!zWwq{y?Y$&pZQdMl5P9|fA3@m-ZU6uP literal 0 HcmV?d00001 diff --git a/2022/1/data.txt b/2022/1/data.txt new file mode 100644 index 0000000..15f8fae --- /dev/null +++ b/2022/1/data.txt @@ -0,0 +1,2238 @@ +5229 +1021 +2051 +4766 +2272 +5810 +4688 +2324 +2108 +1555 +1221 +4146 +5044 +2238 +4504 + +4800 +3333 +1171 +5362 +6213 +3200 +1185 +5839 +4075 +3956 +6688 +4293 +2244 + +6719 +2596 +5233 +5371 +4802 +5901 +6093 +2420 +2593 +4093 +1909 +3851 +4143 + +4353 +6425 +2546 +6368 +1939 +8550 +10505 +4718 + +16579 +11333 + +15453 +15172 +2678 +9202 +12549 + +2133 +16769 +6807 +10384 + +5130 + +5492 +2088 +4364 +2038 +4419 +7450 +3359 +6575 +1811 +1065 +3443 +6769 + +8085 +2908 +2192 +9586 +8144 +3625 +1113 +9057 +6255 + +1004 +3788 +1602 +1397 +7117 +5793 +4339 +7354 +5803 +2360 +6861 +1522 + +5499 +2694 +8448 +4969 +11138 +10227 +10473 + +4744 +8173 +8040 +3327 +2479 +1309 +5436 +6021 +4698 +7111 + +13459 +12831 +7358 +15243 +3310 + +7088 +4279 +7065 +6887 +3621 +4702 +1484 +4701 +3229 +3439 +5433 +4329 + +7427 +7116 +6640 +1625 +2075 +5473 +2507 +1544 +6361 +2094 +3899 +2610 + +6263 +5554 +6191 +6093 +5987 +2865 +5213 +1355 +4344 +5328 +6272 +3737 + +2399 +2336 +10098 +6547 +9483 +12974 + +1527 +3720 +2296 +2088 +4438 +6495 +6942 +4604 +4107 +3254 +1380 +5208 +5948 + +4000 +2423 +1105 +7756 +8917 +7394 +7770 +3422 +2047 + +67584 + +2065 +7562 +10516 +10553 +10862 +1649 +6791 + +23829 + +15750 +2204 +19115 +15870 + +7268 +5558 +5422 +5021 +8548 +5005 +6228 +7622 +2537 +8556 + +33525 +27002 + +22390 +18440 + +6424 +3180 +3370 +5910 +3600 +5372 +2190 +4435 +5612 +1747 +5186 +2234 +1362 +2488 + +10025 +6160 +11865 +10498 +8954 +11766 +9467 + +7958 +7431 +2598 +9243 +1023 + +5265 +7388 +19730 +14381 + +7462 +7931 +11405 +15307 +2299 + +13973 + +20066 +7931 +7988 +8215 + +3310 +3792 +8265 +9425 +8647 +6148 +7474 +1780 +2499 + +5298 +13922 +4072 +10671 +3101 +12829 + +16641 +22259 +1578 + +9335 +5856 +9672 +5600 +6443 +9070 +8995 +8084 +3434 + +4216 +5010 +11813 +20020 + +3295 +2690 +4680 +2403 +3001 +6708 +5748 +2355 +2128 +5044 +2099 +6000 + +3763 +6528 +10478 +4551 +9988 + +8569 +7005 +4566 +6513 +1950 +2148 +3186 +1171 +5245 +8244 + +5606 +5518 +1462 +5388 +5695 +5634 +1000 +2098 +4377 +2150 +6258 +1533 +6222 +3036 + +6084 +6129 +8881 +14255 +6495 + +66183 + +5564 +1009 +4149 +5793 +2266 +1705 + +5977 +22302 +9281 + +6193 +14000 +14745 +3014 + +5902 +17074 +11705 +9397 + +6884 +6107 +4079 +4218 +5741 +6422 +6436 +3614 +6461 +5772 +3100 +2299 + +1546 +1259 +1627 +12300 +4167 +3932 + +1885 +9182 +1952 +16058 +14592 + +16225 +16113 +10532 +4250 +11214 + +31877 +36104 + +5246 +5358 +11483 +11503 +5218 +9448 +7425 + +25508 +9115 +4944 + +9218 +2788 +6860 +7370 +7501 +6767 +7943 +2835 +9385 + +10446 +7768 +9449 +4090 +3771 +9608 +10677 +1005 + +2635 +2054 +1833 +5826 +6041 +4622 +1105 +5411 +1506 +1923 +6431 +1353 +5869 +1648 + +5704 +6247 +4503 +3083 +5779 +2804 +1199 +2892 +2739 +5607 +3526 + +2771 +5208 +3119 +1113 +3476 +4207 +5357 +2120 +3531 +5552 +1043 +3669 +1914 +3652 + +18512 +14761 +12199 +1376 + +6703 +4679 +7790 +4334 +4303 +5619 +2589 +3915 +2997 +6274 +4484 + +5025 +2456 +8912 +3731 +9568 +7868 +3151 +2172 +4352 + +2779 +7809 +3280 +7390 +4478 +7060 +4169 +7992 +8380 +8439 + +3143 +6816 +10122 +5685 +5170 +2059 +8293 +9561 + +3417 +4412 +1467 +1311 +6945 +3132 +5980 +6429 +3119 +2319 +7478 + +3223 +5320 +7368 +8486 +2951 +6262 +3176 +4165 +3878 + +2443 +4707 +1055 +6164 +1933 +5384 +2472 +4678 +1365 +6058 +5045 +3526 +2478 +6242 + +1286 +5592 +3943 +2235 +2166 +4402 +4203 +2419 +1191 +1985 +6481 +3031 +3699 +6274 + +2203 +2020 +7484 +7188 +6099 +4564 +5343 +2978 +1539 +3436 +1581 + +28968 +12842 + +4498 +2415 +5259 +3098 +1288 +4208 +5355 +4597 +4699 +1928 +5050 +2462 +1514 +5115 +1197 + +15417 +1105 +1468 +1358 + +1621 +2013 +7223 +7313 +2414 +6412 +2365 +7850 +5633 +8206 + +3811 +5927 +1159 +1085 +3270 +4467 +3219 +3170 +4662 +2590 +1022 +4492 +3701 +4735 + +6547 +15615 +1763 +8586 + +23698 +22840 +12561 + +6985 +4860 +12931 +16856 + +1083 +4957 +6887 +5155 +4573 +8668 +1336 +8058 +8624 +8116 + +6282 +1864 +4625 +2738 +3100 +3852 +6224 +2926 +3468 +5571 +1032 +2980 +2729 +1273 + +4675 +4413 +2779 +1618 +10546 +6725 +4553 + +15889 +13338 +16005 +4849 + +4016 +3798 +5876 +2734 +3833 +4346 +2636 +4337 +3190 +5733 +1979 +5696 +2727 +1418 +2574 + +8667 +4569 +7164 + +19076 +3353 +4646 +17303 + +7284 +3008 +3663 +5071 +3042 +4171 +1437 +5811 +6058 +5130 +4305 +1291 + +7413 +7982 +11370 +4943 +9583 +1901 + +1642 +7125 +2990 +7913 +11688 +2514 + +2868 +12143 +12040 +11711 + +8805 +1603 +1179 +13785 +8428 + +4162 +9190 +6700 +4467 +4947 +2815 +2319 + +64490 + +3013 +1415 +13338 +3331 +1361 + +26047 + +1780 +4104 +5757 +5818 +1251 +3359 +4210 +1382 +2507 +4818 +1130 +6357 +3442 +5819 + +10413 +8903 +6201 +3934 +12130 +8453 +10653 + +1684 +2348 +5795 +1420 +1533 +3313 +4634 +3107 +4626 +5932 +3543 +2424 +1944 +2915 + +8046 +5983 +4089 +3012 +1454 +5177 +5704 +5148 +3769 +4505 +5509 + +5484 +7059 +10998 +4037 +13095 +6590 + +1059 +1731 +6387 +7867 +5405 +7385 +4731 +5900 +7625 +4242 +5875 + +13584 +9147 +24719 + +7419 +3974 +4510 +6372 +1552 +1934 +3671 +6909 +6537 +2785 +4339 +3714 + +5596 +5725 +4532 +4762 +2518 +1155 +3972 +3028 +6432 +4100 +1883 +5287 +1470 + +3265 +1729 +3171 +2551 +4462 +4361 +4693 +1886 +4187 +4430 +2527 +2109 +6052 +5684 +2048 + +2469 +3613 +4172 +4836 +5713 +7756 +2870 +9449 +8116 + +2474 +7277 +6954 +4829 +4791 +6739 +5223 +5751 +6456 +7201 + +22678 +12732 +15221 + +3414 +4011 +6552 +4142 +3298 +2479 +4871 +6551 +3378 +4159 +2044 +1348 +4820 + +1720 +2185 +1264 +4074 +4456 +6572 +4805 +5381 +5202 +5656 +5154 +2408 +4344 + +1578 +2550 +3350 +3005 +3781 +5022 +6092 +2156 +3303 +1167 +6109 +4984 +5228 +4764 + +9527 +4255 +16366 +9609 +15617 + +1931 +4759 +4649 +1068 +5695 +2296 +4911 +3557 +2692 +5220 +2041 +3792 +1036 +1282 + +7735 +1541 +9568 +5770 +2422 +9918 +9230 + +4047 +2209 +1412 +2876 +5087 +4431 +3271 +4213 +3874 +1850 +2848 +3097 +1604 +6014 + +4123 +5797 +9239 +4185 +1985 +8496 +12133 + +5966 +3182 +3301 +3752 +3076 +5895 +4127 +1256 +2765 +5702 +1099 +2699 +1982 +3853 +2466 + +3231 +16587 +14341 +12450 + +3252 +5245 +7317 +3264 +1597 +7616 +7997 +6473 + +30334 +20535 + +3226 +1900 +1115 +2451 +2544 +1454 +4748 +2103 +1603 +4768 +4127 +6880 + +7664 +4890 +7471 +4256 +4500 +7972 +7735 +1608 +5403 +6407 +2323 + +16144 + +17580 +15361 +20625 + +3069 +4258 +9309 +4430 +3506 +5655 +2470 +2554 + +6720 +4729 +10030 +6668 +11714 +9766 + +5695 +3592 +2401 +6246 +6326 +3577 +7170 +2956 +7886 +5671 +4073 + +9308 +6580 +3406 +2614 +10222 +11738 + +5705 +5017 +7426 +5464 +7683 +7143 +1430 +3296 +5567 +1246 + +6068 +16761 +24717 + +8627 +4695 +3905 +9375 +2530 +2468 +8353 + +4233 +8937 +4755 +7728 +2911 +8201 + +11742 +9806 +9398 +5486 +3986 +3737 +4431 + +4521 +6395 +10148 +10058 +5169 +5924 +6215 +9839 + +3822 +3938 +3255 +5686 +4069 +1748 +5290 +1172 +4756 +5298 +1445 +1151 +1757 +4880 +1005 + +7801 +5402 +3736 +1269 +3067 +6793 +2603 +2757 +4267 +1098 +1487 + +2050 +2462 +3498 +1989 +2954 +5902 +1742 +5812 +1725 +3039 +4056 +3462 +2234 +4982 +4204 + +7154 +7180 +9175 +7523 +11486 + +2268 +14293 +3172 +13819 + +2565 +5565 +7335 +3609 +1350 +1829 +3223 +6861 +3201 +2821 +5546 + +27227 +6603 + +27999 +36577 + +1899 +5224 +1904 +4450 +4721 +3288 +2261 +1482 +5854 +1855 +3314 +1240 +2040 +5785 +1321 + +5636 +13866 +11081 +7189 +1212 +3350 + +1128 +4191 +5944 +5123 +1758 +3625 +4668 +4213 +2290 +5714 +3182 +3927 +1452 +1336 +3944 + +5180 +3316 +5766 +1930 +1360 +1494 +1686 +3687 +1163 +5291 +2004 +5156 +2966 +1079 +6110 + +16746 +12254 +6000 +5315 + +2494 +6563 +1214 +5120 +4184 +2958 +4187 +3182 +4165 +3772 +5885 + +2563 +9144 +13383 +2614 + +1967 +6950 +5760 +11165 +2977 +6822 +11217 + +4641 +3789 +3318 +7045 +2157 +5785 +2074 +4366 +6727 +5210 +1268 +7154 + +1050 +4906 +5598 +1917 +1037 +6393 +1109 +2455 +3396 +2416 +5997 +4541 +3292 +6169 + +3863 +4824 +3689 +1274 +5440 +2468 +3532 +3726 +2534 +1350 +5809 +2808 +5413 + +5625 +9547 +9049 +4953 +10529 +5656 +5423 +10330 + +3362 +3192 +1803 +10128 +10464 +6895 +7316 +6016 + +4023 +6108 +5742 +6475 +3507 +3644 +2447 +2746 +2025 +4809 +5356 + +5481 +5028 +3434 +2592 +2764 +4581 +5131 +6579 +3688 +3831 +2638 +6920 + +15426 +10544 +15670 +10196 +10450 + +3950 +1578 +7483 +6322 +6168 +5071 +1959 +6613 +2528 +1155 +6651 + +8933 +7371 +7241 +2825 +3312 +5629 +5569 +1476 +7875 + +6063 +8359 +8025 +7009 +2844 +5998 +2172 +5087 + +3012 +4589 +2428 +4325 +2476 +4431 +1084 +1870 +3717 +5620 +2078 +5550 +3696 +4003 + +12043 +10021 +12260 +11676 +1358 + +1906 +1415 +2453 +2656 +8867 +11861 + +2003 +8051 +3821 +5617 +4339 +3956 +1460 +3683 +3041 +1109 + +5108 +3195 +4262 +3074 +1153 +5069 +3090 +2216 +3822 +5849 +5349 +1722 +3544 + +3131 +7765 +5030 +7322 +4358 +3805 +6231 +4337 +6983 +8058 +1750 + +4404 +6696 +9425 +1185 +8939 +7995 + +20444 +12374 + +4697 +4969 +3703 +3355 +2636 +2864 +1906 +2337 +5805 +5042 +2531 +4525 +4332 +5240 +2334 + +2803 +7814 +21563 + +1134 +5051 +6097 +2678 +1589 +1077 +3220 +4583 +5404 +4625 +5550 +2604 +4208 +2707 +1403 + +31477 +25502 + +2395 +3341 +4197 +5847 +2087 +4219 +3782 +8698 +1857 +4450 + +6868 +1572 +3798 +4386 +2165 +5536 +3098 +4647 +2891 +3992 +1417 +4182 +2526 + +5524 +1679 +1359 +6686 +3481 +5993 +5716 +3492 +4518 +2286 +5154 +4729 +3745 + +2077 +1960 +2921 +5233 +6199 +5723 +3587 +2224 +2973 +4124 +2532 +5729 +2725 +2212 + +5547 +27031 + +2663 +4381 +2660 +3011 +1553 +4661 +4388 +4255 +4149 +5342 +1474 +1773 +1643 +4990 +2785 + +13510 +11941 +11601 +13234 +14555 + +3141 +1458 +2337 +1301 +3536 +3120 +5346 +3305 +1966 +1317 +1306 +5272 +2471 + +14739 + +1090 +4088 +3187 +6949 +3188 +4069 +1081 +1362 +4687 +4987 +6125 +4276 +5416 + +5420 +4661 +1134 +6794 +6879 + +3519 +10646 +11068 +7566 +1738 +4000 +6352 + +5828 +4345 +1475 +5378 +3732 +3484 +1380 +5713 +1288 +4980 +3355 +5957 +4201 +6060 +2319 + +1567 +6755 +4660 +5039 +2185 +5556 +1548 +6784 +7435 +8673 + +7674 +6663 +4682 +7994 +6190 +5627 +5437 +10249 + +6224 +6926 +3873 +8730 +3293 +5941 +4277 +3248 +6169 + +33991 +37153 + +10839 +17054 +2274 +16762 + +3539 +4987 +5992 +1987 +6262 +7251 +3518 +2978 +1940 +7579 +4792 + +15466 +17473 +11506 + +6225 +1583 +3381 +5832 +7437 +1738 +3851 +4062 +3985 +6128 +2106 +5395 + +11595 +11726 +4915 +6481 +10978 +11348 +6436 + +69359 + +7954 +6267 +7397 +2410 +3368 +2405 +2653 +10068 + +1229 +3516 +2863 +5960 +6461 +1208 +2495 +2725 +4777 +3103 +3609 +3455 +6118 +3885 + +10757 +17804 +13767 + +13854 +2648 +25818 + +8694 +4841 +3987 +11448 +12847 +2139 + +1320 +11876 +13686 +15670 +3638 + +11207 +5853 +16863 +6347 + +3506 +1460 +2170 +1558 +4391 +5749 +1559 +4347 +1848 +2377 +2287 +2061 +2944 +1859 +3770 + +1004 +4706 +2800 +5717 +1363 +4130 +2804 +4492 +5275 +6138 +1741 +4835 +1608 +2935 + +4281 +4949 +3882 +4723 +3772 +1715 +1966 +2851 +5124 +6875 +2605 +4571 +5076 + +5090 +1237 +4259 +2706 +2207 +3303 +6721 +5107 +5765 +3215 +5590 +1299 + +3633 +5271 +6428 +2905 +3439 +1169 +2324 +3467 +5839 +2215 +3825 +6168 +2515 +2639 + +4152 +3191 +7939 +2909 +7758 +8458 +10068 +3091 + +7840 +3473 +1536 +1749 +7930 +1987 +3695 +4027 +2904 +1083 +2398 + +1712 +3774 +3351 +2025 +2892 +3478 +3597 +4129 +2755 +3052 +1201 +1473 +4412 + +11300 +11432 +8714 +8717 +3686 +9938 + +2212 +6074 +1598 +1582 +4499 +6651 +4829 +1075 +2163 +3523 +3353 +6924 +5548 + +1300 +2708 +4287 +2338 +6756 +2542 +1000 +3609 +4850 +4073 +4370 +1536 + +8355 +10196 +9152 +7652 +6908 +10396 +1328 +2985 + +1636 +5454 +2321 +8639 +7510 +2116 +9825 +2967 + +7415 +5557 +6905 +7370 +5778 +2604 +5217 +7410 +3024 +1438 +6475 +4944 + +6302 +6308 +7719 +3740 +1278 +6259 +7667 +9084 +5198 + +2829 +4397 +3821 +4890 +2281 +3494 +6039 +5283 +3650 +2374 +5767 +5077 +3983 + +13986 + +4806 +1352 +6248 +6441 +2520 +2442 +4442 +4725 +1529 +4924 +3382 +6294 +2256 +4248 + +1914 +2192 +2583 +3469 +6484 +3053 +1601 +2778 +4338 +1295 +2052 +1196 +4080 +1226 + +5912 +5781 +4362 +4609 +6503 +6887 +6190 +6875 +5729 +2286 +6269 +3697 +6917 + +13964 +18073 +1619 + +5598 +4795 +3109 +1533 +4062 +1070 +5467 +1791 +1786 +1690 +5663 +5442 +4007 +5523 +3620 + +5587 +3778 +3342 +8950 +1061 +1562 +4896 + +22883 + +3218 +3454 +2771 +2855 +2949 +4683 +6479 +7767 +2638 +5846 +7089 + +9225 +6021 +7659 +9858 +9055 +1762 +10125 + +12693 +4685 +19506 +12078 + +6854 +5988 +5689 +3777 +1147 +7286 +6738 +1202 +4855 +5018 +6886 +6392 + +7804 +1729 +9762 + +1753 +2124 +1404 +6974 +5381 +7212 +3108 +8010 +3290 +4152 +6716 + +6101 +1846 +15812 +14339 +2432 + +2278 +5499 +4614 +4429 +3867 +2956 +3488 +6817 +1576 +6129 + +3185 +4667 +8304 +2137 +3003 +4787 +7451 +6037 +5938 +8541 + +58634 + +5507 +5347 +7888 +8768 +8159 +3449 +8288 +5246 + +1701 +1682 +4615 +2661 +3590 +8912 +10306 + +8832 +2882 +10016 +4781 +3901 +5466 +8481 + +6374 +3087 +7462 +2743 +7047 +7400 +5802 +4531 +5299 +1025 +1437 +5227 + +6500 +2359 +11048 +2806 +9293 +9680 +10283 diff --git a/2022/1/main.cpp b/2022/1/main.cpp new file mode 100644 index 0000000..402c18e --- /dev/null +++ b/2022/1/main.cpp @@ -0,0 +1,57 @@ +#include +#include +#include +#include + +int main() +{ + std::ifstream ifs("data.txt"); + if(!ifs.is_open()) + { + std::cerr << "Couldn't open file." << std::endl; + return -1; + } + + static bool last_line_blank = false; + + std::vector numbers; + long total = 0; + long most = 0; + for(std::string line; std::getline(ifs, line); ) + { + if(line == "") + { + if(!last_line_blank) + { + numbers.push_back(total); + if(total > most) + most = total; + total = 0; + } + last_line_blank = true; + } + else + { + last_line_blank = false; + total += std::atoi(line.c_str()); + } + } + + std::cout << "Most: " << most << std::endl; + + std::sort(numbers.begin(), numbers.end()); + + if(numbers.size()) + { + int three = 3; + long total_total = 0; + for(int i = numbers.size() - 1; i >= 0; i--) + { + if(three-- > 0) + total_total += numbers[i]; + } + std::cout << "Top 3: " << total_total << std::endl; + } + + return 0; +}