From 0e3f31bf10494ba39a262223e691473cea01eb5b Mon Sep 17 00:00:00 2001 From: Jim Shepich III Date: Mon, 9 Dec 2024 15:13:49 -0500 Subject: [PATCH] First puzzle of Day 4 --- 2023/01/day1.py | 27 ++ 2023/01/input.txt | 1000 +++++++++++++++++++++++++++++++++++++++++++++ 2023/02/day2.py | 9 + 2023/02/input.txt | 1000 +++++++++++++++++++++++++++++++++++++++++++++ 2024/1/1-1.py | 4 + 2024/1/1-1.sh | 31 ++ 2024/1/1-2.sh | 27 ++ 2024/1/input.txt | 1000 +++++++++++++++++++++++++++++++++++++++++++++ 2024/2/2-1.sh | 106 +++++ 2024/2/2-2.sh | 35 ++ 2024/2/input.txt | 1000 +++++++++++++++++++++++++++++++++++++++++++++ 2024/3/3-1.sh | 25 ++ 2024/3/3-2.sh | 35 ++ 2024/3/input.txt | 6 + 2024/4/4-1.sh | 79 ++++ 2024/4/4-2.sh | 0 2024/4/input.txt | 140 +++++++ 2024/4/sample.txt | 10 + 18 files changed, 4534 insertions(+) create mode 100644 2023/01/day1.py create mode 100644 2023/01/input.txt create mode 100644 2023/02/day2.py create mode 100644 2023/02/input.txt create mode 100644 2024/1/1-1.py create mode 100755 2024/1/1-1.sh create mode 100644 2024/1/1-2.sh create mode 100644 2024/1/input.txt create mode 100644 2024/2/2-1.sh create mode 100644 2024/2/2-2.sh create mode 100644 2024/2/input.txt create mode 100644 2024/3/3-1.sh create mode 100644 2024/3/3-2.sh create mode 100644 2024/3/input.txt create mode 100644 2024/4/4-1.sh create mode 100644 2024/4/4-2.sh create mode 100644 2024/4/input.txt create mode 100644 2024/4/sample.txt diff --git a/2023/01/day1.py b/2023/01/day1.py new file mode 100644 index 0000000..31ff663 --- /dev/null +++ b/2023/01/day1.py @@ -0,0 +1,27 @@ +input_lines = None + +with open("input.txt","r") as f: + input_lines = f.readlines() + +calibration_values = [] + +for line in input_lines: + first_digit = None + last_digit = None + + + for i, char in enumerate(line): + if char.isnumeric(): + first_digit = char + break + + for j, char in enumerate(line[::-1]): + if char.isnumeric(): + last_digit = char + break + + calibration_values.append( int(first_digit + last_digit) ) + +print(sum(calibration_values)) + + \ No newline at end of file diff --git a/2023/01/input.txt b/2023/01/input.txt new file mode 100644 index 0000000..8fb96b1 --- /dev/null +++ b/2023/01/input.txt @@ -0,0 +1,1000 @@ +tmmnhlxzpj1eightldxhjnone97 +9fivekfpl855mjmfdqzvbn +two29eighteight1 +4md +sixbrqklb347 +6sevenninexpnbgbr11three15 +4zggkljkcqthree7 +7lxjkqhmxcxsevennhszsbxzdfsonehnsrcfour9 +jtpmfoureightvtjmlshbfour6nvjkqnddp3 +twofive2fourfive1dvnrrvjr +twoeightnq6ninepxv +39sixgphfvninexts71five +seven3two8 +six59jhtfvv1five6 +7871three915 +prrvrjlpgxpjdxfchqonepchqbhqxx9nbrvh +gneightwo5txxzpkctwojvrcgbd9 +329 +5mnmpsevenseven +ccshz8 +threeqthree5eight6blzzh +moneight3onepkjskr9 +ctdk8zkhzzkt +nbfrmvlnmbeightbxs55 +six5mrrvsxqhqj162sevenntsnztmsdbnine +78dlfqtsplmnbrtfive3tskrrjnqktrkrfdxps +rljhmtwotwo5sevenfourtwo +6drnzxz9fourfourfourxfxsxhlzqx +7two8dvhghtd +five277 +four7mfhfcpqjjvlxvbs +sixhdxxhrzrsjthree2zddffivevzkcppvpshh +hnsnbldnp5hdfzqnine +kbdfmgjtfxzszl6fourtwo72eight +4fourxrtvjh +dzbfkvzlg6ngnrsevenzfqmlldc7 +eighthg62txtxhkl9 +5dckmbonetwolgsixvvftfive +twordkznxxffour3jgxhl95 +eightsix4twofoursgdlfkjonefoureight +9qlh1ztk9 +fourrmbrseventwo4pmdmlkp +sevenfive6gbcfslxhkmqlvspvgjgpsrffive22 +34threejhd9one83 +577twomg +threethreezcl9tkhjgqhknrmscpppjnnlnrtrx1 +tjxtcnxbq1sevensixfhhnfour +4six3kcnkonegxpfj +knhpcljnjhfive5seveneightck7three +rvrr1 +jjqvphczpqdmszgbqnsevennine81 +54568 +97zvmkrslhzvvrjgknjsevenfive1four +8onenine4mpfdsixfzhtpz7 +rdgjphdxkmmrh6fiver9ninetwojgxpghhp +gdhk3twonine91zzzmmone4 +qsxvlxkfnpvdthqteight24nine4 +sixeightthreesixfivevf3qfpvzvnt +five4nkqfcdpqn3fourcqfjjkdnjxf +xkpmtmhxlxfourvdsjmpsltr1xk7 +threezqkb4 +h2ckfnlk +kzngqxt27fourtwo +lgzhoneeight7fivenineseven5 +2fivesmzgdnsqcm +4n442ptkfx +sbkdpn2nhdjqc +bh22eightdqvhpspx +hdmdg7kjr4 +three3jttm7fourfourckm7spkhqdtv +1twoone2911 +dvhmdbjlhfqllkrgnine1ttjvczdsrk5trngnvlnfnone +two3pbdvzqonefour3bzktxlgdeight +7eightjcjkqldhpqfrlt9nine +2jvdfdcsnnsonejbxqrmhdjthreesix +7pxbhzglcb283sixnine4 +38npgninefive2two6 +jqeightwo7dzfcxppxgtsixfl966qzlbpczz +sevennine3bvdzkrjff +25hninehtwothreeseven +xdrkprvdmd8fiveftwopkcbfhtxmtkjmklzpphjjtqjfvvh +2slfjzgflnhmc +2bqnbkd +twothreeeighteight8gnhccvzfour8 +3six2two3btddfjt1 +eightbcmnpnmq7hcqd1kkbjmtnlcjsixoneightvrh +v99zsseven92five +fourzngffive1five5threethree +onesix36 +sixtwo6qlfm6onetwogfive +pkzjfive4sqknbg4gqbqmdzczcqrds +9sdgnqdnxqpjgmfourfour8lbrskpnglp +sevennpxtlltn7eightzfhkltfsixsixtwo +xjhfour9 +7rmtwo +nine1seven8 +oneqcnrjbqnbzfbxz4eight68 +seven5four968five +lhzgtxxdr7seven +lgconeighthtrvbkp17one8jsxhbxhvqr +41three +seventstcfbjbmsixtwothreefourtwojsbrdlml2 +8one5nbpmdhcfjhtwohbjhmzttmr9 +cvcl644eightmzzsqstzjkn +mxgj1seventwolttplthree +33nine63twosixrgrrzsgj +seveneight1 +jqdp16six +893plhbfvfc2threetwo3 +6qhfhzsclsmvcpxfjxkl +two8nine +sevenfivetwo1pn +threeone4fkpdk81trqfivepgrvdbd +8rtwofhfthngbnphrsn8fr1mq +235 +pztmvdb9fiveeighthgqvnine6 +8jqv +9sevenhcdntl4eight +682onepdphj5 +fstfvxrxt86jkzmlvnzfivethreecbnsevenfive +eightfive4ninenine3ktndjdhb4 +7twoflphhdcs +9thvn912mdcpfn8 +pxfvghsvtxsevenfivesevenninecck7onenine +sixvd2xmnxrtvfhcng +fiveoneseven96eighttwo +eighttwo6fourgggthreefzpbxmq +9zlkfnbfb +nhmssnx2 +oneeighteightfive5mlzbnxlgthree7nzkhl +rqrxzkpmglsixvmvrcgtlptkz9grhvhstknq +three12five44onevglccksrpgxkc +3oneseven4mjtwofour +fmcmjgvbfonesix3ninemninefivethree +sixvlvxxtwo77 +fivefour4 +51six +37lrmmfmjjn8six +twozzfcz3nineslvv8one +1fourninesix6sixmjngkmsntrnvmtwonehrn +oneeight3four12hqnjxlfxtg1 +9dlqkqgbsvxqnrk +1cxfptmfnschgkdl +threefccrrscjcg194 +seven65kn34five9 +2lrnxvs1 +nine91bqvl2six8five +twoeight9xkmmgkmkhx +rpspvmxkfqtknqpbvcmb9zrqvkzgszbkcone21 +5oneklx3 +fkjsjg5seven75gjkh3 +eightrccsmczqbn92eightcxgrmpsljztwo +pktwopzqjjmsixshkkqkkxglbzqrxr6 +4mdfqlone43nine99 +34fnkjkfbqfbfmnbskfzvspgrslljmmseven +89one72nine4g6 +two5fjzmceighttworqjlsdt6five6 +pneightssjlhtzqvvzcgxjczqb8 +9jnlthv2djkxqgcfmlzvtwonek +fivesevencqmhsd2zdmld +fmnmqbnhkg1nnsnsdjhfivenvvztkfournine +8zxcqlrftmvvmvg1ttcpclfvjggblp6four +prlrhh8sevensixthree +kmdnxq3 +653 +l6vntwo9 +lmkqjnxjrqqcd2two +vpfvlklftthreevdnsnvsix2 +33ninembqcjndfl6 +two6rqvdctwo +521onethreepsqbgd1six +8k +qxqhpv2sixfxzlcdnfhdj +six8gpxkmlqvsvx2eightfour7 +dxfrgznlvtsxj2fourdzdml +tnjfm2onetwo92two5 +eightfiveninejncfknkkone825prnmmxzcdp +9sevenfive23 +sixninelclnzpdhd7vrfvsksrnine1z +sevencqsleightone6 +nine9seven495eight7 +xvf6xdsrlqcchrzpskgvfiveseven +three8t22eightmhbsfnkhqdmsqpfzhthree +6oneldljnzdsevenbvkcmgvhstqslblgfxrkfour +9ftkbeight6rpf +8lsmnpbdt6fourgbrfhpmjgkrlc +2five1hlgtjplhfive +ninesixhqdcsxlsm4991cmlmrkgrgqmdbmtxd +zznhdgkcrq21three +qdgtfbzxh1 +loneight7ninesvjgvfsmfjd +3mj7313gbxcdcnmvjzqkbg9 +vnxknklscmhjrxnzbp9qzfiveeight +2lxbtvthreetczjsonepjmrsflhndone +jsixbqxkjlzxone8onefbqgnhjmnq +fpsbqpx5drptgkvtwothreeninexcrm8four +rhlcnnzvcone484three5 +6threefive +sevenrkldjeight1 +16744qgmmpxxn3nine +xq1eight +sgrfourc6grhd +9three944six5rnzj +ztjfqjzzsq6sixsevenseventwosbztgl32 +eightztmtzkmjdvjxhrnbrph3dsdmkrndd8zflhmtpx +two3onevgrjshfl5mkdxmdkkrtthreesix +srkgcdmrpd5 +4ltngqjpt2five +seventvxkdvqlbd3eightpmjpk +3three5 +nine5d +mrrbl8 +frvtwojcvppjbtpp3kpzzf +eight4oneonefour +nineptjfjfourthree1six +jvlmgcpxgckgzjpczfvjkthree2 +twotwoeighteighttwo7 +cbpf5threedsvlvxfcx3fourone9six +17seven62sixjklrjqphfcbvmnscttwo +jsix75qcrrcjthz5jnmxqsfoursix +sevensrkcschst2 +two7nine888fourthreenine +3threethreepnx5 +sevensevenvlttfbxmjg1five +233eightmxbmdgdthgxgv +6three27one +fouronecqgspprhgt8rzshnskmn +364dclhtvrkptqlnmjkpkpjxtrfm1seven +3cdf61fttxmkpbh63c +eight1dpdmptdnineeightsixeight7rvzz +four8sixsixfourldrxfszpnlcmkjxnsrqrone +krhgrd2ninesixxftmtq2sevenmkld3 +79onesix +twozjgx1qdznxdgzpzghqf +rvpfz675fpzvmskq6 +dnnnfxcrxhninefourjgdkprtqbv63 +rhndq8zvftnvqm8 +5onetvnhptcqlm9z1 +49nineqgsjrz +28kbcjbkmrvqninetmmqdjjhxoneprtkhdsllc +threesixonenine9 +threevthxddrxzqbcninepmfczcppskbj7 +blnxkpbbgndjdsx6 +vloneightninesixsixchp3eightnine9 +srgcvgghjjsixgsnqmlfive672svfb +glkzvd84 +vr7two24threethree +xlfdr1fivelfxvnjpz +3frsxgsmzrh7 +4one6hrtnb3 +eight44fivesevenrhsxbfbntseven +9two9cfffqd +pbqp3ninegqgxvpkdtjnqsb3zshhlxsrkrvjm +7seventwothreecgbbvqftwo +3h +7bgfrqgmqsix2nine5xgbr +zdkqfshrthree4nrttmzjb2one +one15 +2sixdx4 +128ninenzcfmbgq3sckqrcnkvgthreektk +seven2zqgrjjsq1four8sixeight9 +4four11two9dszblknpzgrcxbsmp +hcxcxjpndpeightfourf82three +sevenrpsevenxzcrp18five +rcklcnqxgbtszdxseven6 +znbkksfjtltngpdgsz2grsixxszeight3 +59cvcvfourvcvvshxone4bqnmdpr +sevenseven7 +2sixone9gkzkxone58mpvpsj +2bhhzpkjvtbpqf7mkrskcqfourdbqfkkxzqbk +three6fourtrqpjxzgfones8 +oneeightfive19seveneight8 +hhjsqdqhsqdvkmnqeight26scjgksix +sixfourfivetkmvpdvdkfhvfourthree8 +6264fivendcxsmjdninetwo +ssixsevenfmmzpxddc4zbvcvb46 +tqfgpdsqccdfvhjtwovsnine1seven +ninesvdlpthree29k +gnoneightqpsgskpqsjsmfiveffzfklltxthree7vf +fourgvonelxrqbddksnqljsmqr18four +four18threethreeeightnine +nz7mhblpprsgpg +nine3two5glbgtkhdhv87lptxgnbsl +5onetwoone78 +6fourtwo3smkssmcvpsv3five +ps7xxfxmqmvkzjtwo +nbsbfqqqpt52jvphpgp +zgxvgqjklftvtrmfour2twoone5hknxfkr +4two6sevenninehpcpbtvrgc +seven4one22ztmlsc5six +rvtlfsktxp7four74foursixlvg3 +threetwo4seven +kdnstttczthreeonetwotwosevensevenccq2 +9sixqjvcnxkvbmqrqvsskf81 +3jrdhvjsknddqdgzfmhqcdmkskxfnxvxlqtp7 +39brqqqlcjqk4one +onedddpmznxcd7three +415nineonerbpvzxszfone +fivekfvsxdstm8 +47sixcdsstnjldeight6 +6threerhtchlzbpssjqdhs22seven +foursix9 +mqqdrpzmqrsixqsdndm6mbgvkone +czreightcjlznine9cpdtdhcp +298onespqbfmmm +39onefrfkvknine9 +7hsdbsbfrft +shfpxrfrb45rgnpcrqdtsonethreezcgngh +zbeightwobtdhr9 +9lone2zrbfzqthzkrrnine +lvhlkdzqsvfive4bpqvkdmscfivem7seven +fcknbkcqrxclntnine445four1 +five57gnsfiveonejqtzkcjmzp +threeseventxbszffourtwokztjpcbvv3three +mspeight48fourxxvxmxc88 +one67 +gkl3three2mcljzvkpx +threengltpjhdhmjr6sevenntcsqqf5 +meightwofggvmkr7six7 +twoxjcbfjjcmq1kf +four7mseventwoone64 +7hnhhcjnrxsevenffmjlvhnjvjbkgzqmhmonesixhhczncfnhbgsg +hppxtkvseven8g314 +fivenine7sixfivesixlmnlqcg +4gdzjjjsvkl5sevenfour7 +bgkldxbvsqtpdf17lgvbl4 +3zfm +dvoneight4 +three1eight1xpmvzlfiveseven +5ninethree6dvq +69lgmqxpmdxtq +6one8xszfmzfvpxmhv +three971 +tdklrczbqgjhhpz2gkh92two96 +6lrxbnvlh5kqqzbksixmkhfkc +5ninetpqplfour4 +eightgjfjqbzlht742 +lvjtvngcpl2four +nineoneeight9twofivevpfhtkkdmzz +sixcdncmsrzzt97five8tqjthree +tnchfkdmfzjsonesix76 +fourl8ninepjbmkxzdsjsxdj +twozqs7 +zgsggdkgkpdlr5one +zzdkcsevenqggrdzrcdllqqpdnrbsevenvhsfnr68 +5sevennine6t +4rlmrv +six5mlgsevenrflgjfsn1lrtcnhhsc7six +6ff1six +nine87eightsxrqxj +vnvsfqllfbh6fivesixsjpgzrvdzb +six5twoseven +5fourthree3pszxtfivesixtjfdnrxt +seven7jmngpvqnkf979lkgzhbvbltztcsqhr +fmrjztlfsqrone88 +ggjpbpjmdgsix9one +76fourlnjlthhnsix5qqjsxxznr2 +1ninesevenhlbeightfour +1slsghqc +five4dhdkdvrcpvzcckjrrrjfsonesix5 +2lgkbfbbfour3 +5lgkccrp3djlrhzdxck +5kst8fourkljsstq4fbvjmfznk2mhd +3ffmlqrxnc +khxq29 +gxqbkhrone22371lvfsbdvgxt5 +ntfpgz1 +mnbvfqbrgncqlgk5eightxnjgslfqq +four8txcjdvjcqxzdhlthreezslht +933fiveonetwofkprnvkd5 +5pjcpqnqsmfqbtp85kk +6hcvfgzpl7six61 +3fzpgdtxpntlcfptlks4 +5five8 +two2mfgrdn56sixfour +llrgftj52tpdxttlnqzpzfsix +twothreeeight2nine1gmz4five +kgmjhhxl3vk55six32five +twotwo2ninethree +nine6dgxbvljkpcfourrrc28three +one1rspjbqx +7lxmkdvhhseven +sevenninethree51 +fxbstzjvtffive185five2 +one1fivefivexhkngdtnkrbkone5two +7skdzgrpcreightwokq +6znrpdhnine6621four +xsztwo2gjmqtfqfrjhtzjbeightqhgzbpcdeight +one597pbr11 +lhnlmjml2onetwoonesix +86fourdgnbvgsnrd53four +2dnfour4mhmkxtlnrjone3ninefpthhxn +1m +8pmszqtgzcz44four +bplgrtzvvqhjgdgfourqbt6one +3three3sixfdtqkmsnc6 +8fsfthree2onebjntcx7bsghgxphp +three2779sevenfive1zt +seven7gxntwotwo +1tmknl +4fourckhl5pvkjhzqnxp3xzjzcrgbdct +rzddzgbeightxxmgspvfprpkpmsixtwothree5 +8xdqsjqxddhxqvszjjqbsqgpkfour1dxckbnsgfn +582jxgfivedmtwo7 +drsoneight61 +9nqhrrtqrsbbjmlpftpggkmsvhd8 +oneeight55four7 +lkgfnd9leight9sevenfourpcxr +3fourmtmsgtwothfgbxcs2tvvzcsshb8 +2onehtgthreexfnbfrhnhrpq5six +threetwoonen3fivedbzbkzqdxs +gjeightwofourqonesix5nine +54oneights +threesixckkpbcqtgjninellm4dhvc +sevengnxhjjmjbstvlp94sevenfiveqprntdkmn +qchrbptnr4sixfourdzgfxkzsgq55 +lzddtfgthreefive26 +12nine +cfvscrfive6seven +kmvpjtmhhv2one8 +5eight342 +frfngfnx1ctxzxfztptxs89sevennkdvbkq4 +vhtbh1twopngjtq +75kfdrjsnvccninethreebqjh +rjgbkhrd3three8two +psgdspjqqqmd5cdpznxfrsshk +7fourqmtbg5hrgxrhrm8 +threeonepdgrrpblg2xhpqjrbppfive +sixjtfzlnmninerztjlpcjpcxrj3ms2 +csmqjmrb53sevenninefourthree +onetwo423 +c5fivethree86fiveeight3 +2pdpllthree53dxbmmrvn276 +onelnhg4hlbsgzhcm1seveneight +stwoneeightpqzflflfmvmqone7 +86fs3zzsfrn4 +xtlzjxthree9sixtskggjtzkt2 +brjnsc7sixlrmfgzdgktsix5rhtxt +eight7cb +hp6one89zpeighttwo +threenlgmsfzn4 +1msjbpksxqmfoursixthree4three9 +zkhkpttm5seven +p8 +frjrvnone9two +5sixpvfmvfivevtr4 +qbptwoneqcdkqqtnmfjrpplseven13one +5four2one891hvnl +nineonethree1 +beightwo55sscfxvjmqrbcsix5five +sixseveneight82m8dlg +f5six +fivedsjjnpbmgckfpvbfqmhd7 +eighteightthree7nine1four8 +nine2cnxqxvlzt7frsbmtfcfive5 +one8eightfivejdg742 +twoone6 +jqsrmzj1seveneightsix +two7five9rfs12threejmg +rjgggrmxkzrpjmtt4fouronesevenninepppdtd +257sgqvjghcneighttwo8five +threepgshzbxvpfivexmlfg176 +lxlncztzvdzvx1hmjgxkv9twonec +ppfftlnksfmbhntb1twoone4qpgpxjrdqf +tdrthree5gxfq7gv +fourmfl8zl +ckhf9cvcghxj3 +vcnfvsvvrbninemf3jpnbqdv +37ztslhzzlv6blm86z6 +glgsgtfhhx7gpxfnfckdjhkxsfourhhv +twoqmtzzktfjs9vpvpfqxtlf1nine +two8two6twozfgvlrdjj +seven7k7pcprskqtp5seven +1bvgceightoneqvhppcfjsf +4qjonekhqjsprx +rmeightwosixhhthree484 +6two6five6ninefournine +one2864onerbcfdfnr8 +threesixoneone3mbz9threestddhjz +rprmjtmjtmfourzpmfqptwoone533 +one6foursix +fiveeight9njclrmrksdqonefivelvc +three1qkrvgcbnxfour +5ssqddjjmmrkjzgtklztpdnpd +four7qnnfnvgkzlldmcnnine88 +four58fivesevenztqcxrzzqhgjlzt +one24onecxxlzllskdtvsevenbq4 +ccjjht34483 +8onefourfour8gqh53szjqrdhzk +18six +8vvbqzhkgz84four318 +mzxzsjfour64seven +t1 +89sixthreexhtbnlcfnthree +hdxqjnine5xp +seven542nkngvnndrrlrmfbxdntwonehhc +ptwone6nb58nine94twocmkf +six64ninesix73seven +seven91sfnbjsccqdtzgleighteightwovqr +vkcvdone49fourkbm1one +9sevenrg94 +foursixsfvrvhgvc1qvjkj +fnvtfttwo847 +vgxjts7 +6bxjvpksix5 +qxlpjg38qkmxfivesixeightqcffhsxnrk +1mgjfrfv8onetwoxrscgjlcdhnine +rmpvtfkmxnzrfsxtcdj36one +569fourfivessrblkq +threethreezvvkdjzkx5xjxnlglfrt9qdkscsdf13 +qcgd4cbrjprvnineqtfcxnninethree +6six9fhhgnvfghsix +ccjrrbkj56zqzbsf797mxsq +3ddqxrm6one +39four2ninetjcvfzhmgpsmsxrjjseven +fourtq95fourfourfive9 +threemz96onezsqjzbrb +txzgzgcc8threejthree1 +four4ninethree6cqfbfffptwo +one3kntwothreemzklllzfourcjlrnmb +sixone9fivesix +8jsddhfppj99 +5threekmxdglktv +onemxgbhqzjtgcxdmkr994 +2vsgrxcrjbkkp15 +2two7rfvfkzzmpdgqtfourtq5one +ninecqveight5tntgtm37 +38ngqrvhjkfmcl +2fiveeight5 +one5ckh4jtjcqcjr54bphzndqrvnine +8bnine1fourone +nine1sixpbckqsixthree +one7zllzvvgklbkgphtpv +6fivecgrlfcheightonebbonetwo +dgchmmqfbzcjcnpvttcp6 +1seven73ltpgbts +1xsdvdt +qphknjcb4lkzcqdghd3threethree +8eightjxplnt +six5fnnrzghlnjsevendmpnnonethreejvmzgkck +threesix2jjseven +8twotkzfbzbbfive +6onehjqdvpbbmgpnzjjbxltwotwochb +seventhree5four7vgl +seven9fivefive7lxqsldd +xjlkbctseven1 +5sevenpslbmmqnrnztgmdtkzf9gbs1 +bsndznhdfjeightonetwo58 +rxzf7n9vb +4pjhkklkhvsix8 +one11fivetcnzcpzxcssevenseven +one6eightonesixeightnineeight +7xgkhtrpmtwo6five48six +dgs4 +pdb1gtnxthxqeightthree2njhzjtnzfthree +6bstmrhdhhtgvfbqjq +xt68 +1seventwo +79qtjd6 +rhcrhmtmmxcnbjdhqtd7cdblltsljntkbcqnfrchbfbkhclseven +hnlhz15six263nine8 +gxfvnsdqjdsoneccthxvtbxxzqbzplfldxx9 +3sixgsdt4ninefivemxtzzqrztsix +onethreeninethreetwo6pldp8 +n88 +sixseventhree5seven1 +jzrzbhvvpg881 +niner6sixthree4 +4sixfour9 +twodm3dhsxlvvrghqbvfpqvqlvtxdjzjhqvzmb8 +one67three17eight +onefour1 +sevenseven5four23 +qcvddc8rmmmffhjvthree8 +68fmf6 +xcn5 +nineqbqhkxhrfourfive7lftzls +zkkntfcrpthreefive8five3 +ngnzlh81two5 +ninebkxxrvrnh4five +7327sevenspjjxxcxbzgsztgnr +7l7ngrhkvzqftmrkd +2rbthreedtdlvgfthfive +onenine5dzvznlkht1zfnbspkg2 +33tpfdsevenfour8four +19four5 +twotwoone398eight6nine +dcqgn86sixglgbxnp2 +six9vksix5273 +fivefourseven12sevenjmdhpjpeighteightwolzl +1fmqcg3lponetwo9 +tlgbv6fqpqbxskfdmqfour7 +9hqbtt6sevenfour5pfgjktbjhzr +ljlfssmk8pbmdrzd +ffmthzmtwo67fourfivethreefive +kjrnrgqfseven2mtcgtwo +hkgeightwofiveeight3rdtxkfvtwoldvxcdm1 +seven72k52 +xnqf8two7 +sixone5two3 +5eighteight5bsxlgbrpjh +dzgngckszf8fivekpjdbfl7cxprlclfiveseven +threesixthreepmglrtrvxkrzzkq59 +fivenine1eight7nine +9mljfqfjxhzone548 +7soneightpkz +6qq64gfscshkthh8eightsgcmpstwo +dsrvbxvgjf8 +7zzndrkdkmeight3zhgnpgfmrnine +7sixzqmthree5frgxzlkm +3threefivefbplhjtwo +rspdqldldtsr7seven7tzzhcbghtr +1sevenfivejrlzn +threeeight3cjjmr5 +858shrxcprbzjpblfmqpxxgqsjcvr1one +zsttpjninezbkxnvzcdhxhprmrxnrqmvl9 +eightfivefour99seven9vlchs +four1dpgsptmvvqsb +rzbvrst5rone5 +7eighttwo4sixthreebgpskqdkq99 +vskgbh1pj +4vpsznm4nine +onemplzkfckh7pdlqrbeight +6fourkrxslrpqdsthree9eightczfkk +2xbmjgjfour5four4four +fpckvttjznoneptkmtbtgsg12knbzkxgsr68 +twoxmjmqdfxjptwoqzpdcrcfkplklthree3fourfour +8sixnine +l6 +rpskpftttthree2bthreeeight5three +five28fivedpf82eight3eightwoqnl +lgdgpnrn7mklfpcggninefivejvsix +vtdpfp21p +fivefourlnbjf8 +bqnx98sqdpqeight1 +sevenghmdbgvninetwo57 +jx9onetgbjjvhgqvqrstztbthree39 +ptgxlzrp858jkdzgkthreetqlr +2threebmjmzflthreebrzfxrfive +twoonekrkkbbjrfdbpx9 +43bf +eight5five1ninep8three +fournqvnzhklffivexbxpd5dmshsx1 +fournineeight572 +zx7kqgtqv +1fivethreevkzvnn9five +5rjjcz3sixninesixkrjnblg9pnnhzkjd +97sevencplhfngjpc8four +onenjgphpfqr8oneninefvhzcpmdmbsix +threefiveone2snbmscbmkxlcqqqcggflvcgjrnt +pzzhl5 +xfour2mltvkkclcrzptdfldgone +4llllgkdft1sdsixeighttsbxtg +3onesevencrrkrdlbg5 +7eight6fcfive +xbpzhnp6threetwodflsfr +lfkjqcvvlcpxbvp8dnnxrjzklj2strggkjxzkncs +8one2xqjdnine +ninecdcql828four +pbfg1sbfxcjvthreesevenhzdtwohnxdoneightsb +1fbcmzflvkhrkkj3veightonetwo +4threethree632fourzqczbxz +1sevenfour38 +mlrjnpd7eightgnjnxhgz5seven +fiveone9 +two78 +9683klkrcvjz +nineplcvqlvrninenine95 +148hzeightwor +ns6fivemzqp6 +58fourxqsqdg8 +rmjrxhzbhnzn6jgpgvjtwo1hone +xhzphxb1xlqkktxtljmrfour +five6txgsfvnxqbnxljrblgnvc +1threelzq +4gclpljthreerqpbpdhftonetwofivevqm +six5js +twobzktcpscjlfbttxbbtgqvrldrksbvxzrxjffh9 +five1142sixninetwo +8vxclrfive7hxvlgr +62sixxpnbhlhmnlgctgqnqppdczm +9zvfzssqhhjqleight3ncm4two7 +cvsix7cts +eightqnjbnflkqsmdcqrv299 +sixjqlmpkgcmcmcp6qsdpqpdseven8eight +79gnncbfivethreevgfscv +sb4gbzcvtp7foursmtdszdrg8 +fourthree6546 +2nzjtvpsr53 +9pc +nine3eight25eightmeight +pmninezgk5nine +xnrthreeseven9threetzmg +7one5gfbn2 +vtsqhzclv89fh +6sevenfivefiveeight1 +vxcnbtnine8two4tvttnmfjntxmxnqgbhhlonegvkpgs +peight5shvjcng2 +szlpphx277nineone +bhbvtsjpsflkcmktnpqjlzsixhhhxl9xtkbvmszqseven +nine3five2dmgjkbctnnnsix +8threexgklkrz1 +fxfrqrxbrkdfivepstvtqhlrnhvqbtzvfnineh6 +five6gzcdrjxngf6zhsvxgeightninegp +kgqcnddc88eightonetwoeightxs7 +eightsmgmfourmdjzvtd7 +sevenseven836 +sbnrfqzhk7eight +1hkxbb65two7mh +dkczbhqtpvcqfrbmcdcrsixsix37jlqfninenbqmtfzcb +zcqrcpbfttmslbssbpklfrcngmszvvpjqf4rlvqxlnchrxkndbrtxcnm +7kxmzxbhdqsix8 +13 +lqlbfzxzfkxsdbz3six6 +sevenfscdrdvtjeight9threeffrvxdbc +fivebnn246dlbbhphqqgm +hrfqnlcvltfour2 +vtjfour3five4jqtwo1 +fivejkvczdmqzmfourthreetwo6fourtwo +ninesixsixsix3785 +six3sevenninebcvdltmcvgn +rdjqktrmtwo8cnvzv49twoneppp +eightjmcc4onefive3 +3mszqhnzqdhbbplcnq1tmchrgcltnq +sixsevenfivefour5ninesevennpjqzndjx +15fiveeight1fourqprkldhs +one1rbn1lnmdmdf7sixbjxv +pseightwo3jrvcfiveninefive +rzvjn16 +55eight7285ninedf +ninedgone9 +1two9onetwosix6nklsjdbr +9four8xbgnxgs4 +prqkonexszxfpqr9eighteight84three +xkgpnzsptwoseven1foursix39 +ntpkrjggj2sixkznljqzljonemvq5four +4nineeightsevenhgkflgvgqs +zmchljrjpxoner7tgxjdkmcctzrdcrqvkmlnftvm +439sevensix7 +91xkrmztdbpkpdxtrzkrtwothree +tfive11l +htxzbxmlthreesgmbh4ninenine6onefour +4dtcxqrv63glbpmznm9 +3shdcdzzqld4sixfxdmnmjlz7 +8strtbonenine7sevenpcqjvqclcc +nccnc1vjslvtddgcddrfcztqbxvxdnineeight +826nineninelpvnkxzfive3 +7llqfvftl7 +twobdnbnine3fourbsrvpkqsdjxcvk +onefivespnhqrxjzmfive6nine5 +9lfpchffgxthvheight +brqjss6six8six +sevenrfsix7sixfourfourxbjzvtwo +cdtwone863 +eightzvn3 +8252nkkndmhpgtqnb +1pqmbdcrfour4 +263vmbrqqdtrn45ninesix +sevennine4ldhlmdnhzjqksbkrg62 +eightone5ffprsmqfzq6 +fiveeightnpfbdtdbhtwosix11mghg +2seven82six3one6 +81five18nineonemmbsj +4eightbjjjqnc +sevendstdrhpfxfnnhrddppms9 +kgtptmpfhk4 +seventhree6hllpmnqr +cpn38vlpclqzqcgpbdmlbzfssx +96fiveflq +bqcxmrpzql5vxfnpvtwo74kdhsvlkzz +pgxqcskz611bzkhmnn46 +fourfrl7mxvtkthreecfkpmxqlxhdf4tcgrp +3dhzm +58fivenine1nmhjdzlctj8fplnhmtwonexh +one69 +fivethreenzsgqpsmhronetwo18 +five866sevenninejbvm +fourmtnkh4 +9ninelzqf54 +727 +ttwonentrmkxckfxonenine4mdpjhpkbrfzc +fmsix45fivesix +767klvdthjtwo +pnrlxt6hpttnlp +rbtgqmgmthree44ttvone +cgspmnlsl47nine85 +threell6dqsnn67 +486mz4mqpgkxlmdkp +rgvlcpnbnch7flgrm4twofive +hsevenfourcxseven4three +87fnbcfftwozxnnqmqtmp +3qjfnzhhmxt7 +leightwomtzt36sevenhgcfivetwomskfour +sixsix6nzznseighttflzgcbzcthreek3 +eight4725nrpbxfonetwo +scfiveeight7three +onethreezvxbfdklnhone9sixeighteight +sevenhcone5nineb +dkmmhkhsmnmtonetwopdcx6seventthhgkdx +rskzlrdm2six +one8cstbffccz +eightsevenzkkhlcxhmxthreetwosixone51 +82pgkjcxmcmv11ninetwoneld +ftmhgvdrfxdzrbhqx78 +xlsbhctwocvzcxxsixfourtnvjnhrn9one +6jsdgbtbzsbxvdkdlrdk2btonellsdxzfrvvknsrgml +fivepkblscprv49qdztfjtwo +one59795foureight +five96 +6mqj +sixtwonhjhcjhmvkjndzphgkb7dbmngxbthdbkqbpeight6 +569 +4svnndr +xbsfhvsq22three24 +1mms2nbmlsmpkrjvlz5 +gstwo25ldvfzjonetwo4 +mkbsmtrrxljdrxlnrpcrhjtvtmqbzvkld5zvphtjflvmvhqxzrnine +one59twofive5gkvpjlxczb +c5ktp7sixfoursix +mdlrxxfour4pxfour +78hkbqnggsix2sixnrmx +nine2mnxlh +brvkttkjvrp8qpnfgfjhpn +threeseventtpsmm2eight42 +grrxjpcxstwo19ninek6 +kmprxnf1seven8trnb7 +onexmrjpkhdvmfour7seven +2fivetncrt +four5qpbmfxssixbjfdcdsixlcjmhsxx +two87three43 +hjkrr5nxsczthree5bskmeightln +18threesixhjqz6four7lcrrzr +onezfourv1 +rglmnronesix7sixone +6cffcmlfkfbqgfivegkxsf4 +3twoeight3 +six4five19rpjvktvxlqczkcxttssgxcztk +7threethreetwospzk4 +gkhgv3 +plhsjbdhchzzhztdgt4dfkxeightngnxtgqqrvgj +sevensjkvk15qvpckmlh +znvljxmvjc7eightthree66fourrzgkvrxb +72pvpmlflqj4two4klbjmbrfxrcs +mcpvlfpb39 +3sevenlbfrflzeight +126 +78one4hqphnvntqt +9rmpzrfsthbfourthreefive4d4 +one7eightthreecsxj24 +ffmk2gvdngdjxzgtwo55275 +2threefour8qtlhnj987 +gxslxqkf4gmpfpqtvnfourf +3vjmbtpvdzvcpfour8bsppd6 +lfpzvmmnf8six8sixrvmhmg1dcqbc6 +7ppssvcpkpvvp +48twoxgndlgkfzqndkcdzcnr6hzb6pplx +sroneight9lxb6sixfivenmmcnh +tnpdqnqfgs7bhhpponesgmbvrmcsixglddfpbpxvp8 +twogsbzkvslnmfzbt3 +jjlqpfhthree524eight822 +six246fhhczntfvdcxjfqcxzmgdn +6threexgs7 +njxmonehnzjqfnsgbf3rmmldfive +one77eightxgdxghzrtgzddr +ninerxqzqzhjxf5 +4sevensix8onept89 +4onefnnrkljbm84rdeight +ln3253 +ninekvzvmhvmnj7fourchlfggglbcrjs +gdhrt7tjmgmqgcbblx98six +ninefour7onetwomcgjhgcgdl +fourtwo1fiverd +1three7twosix +sevenzgpmc2glhbfcczzg +3fivesevenfive +cshghdvkthree18 +19four5hsnsjkmrrsix +4xcqlfvnxninefourzzhfzkdfdg6mfmp +tqrjmt9zsctcbkpdlkqd2 +2zvpsevenlhzj86eight +xkfzftj5nfjlb7onenineone92 +9bqkbsjccmeightninefmnmfour6jstqgfcfdtqr +ninexlqcltkmdeight64one +7eightfour7two +three6tflgzsphcpbqgvmqnvn8 +threejdlgm8293three +pppm8dzvd8onefourtwo +ninetfkqhmckv581 +eight91twofourvzbpmf +1tgrgfourseven +phpfxdrlcjpshbrhrktwo2kzrcngmsmdfpvlmmbjzbrrxznkv +57one8two +fourglsthreenbzdfddhdh3sqkh +2glpbhskt8526s +455dxvmvjhh1skbrrf9ck +ninez6 +pdcsjdkc4nine +nineonesixsix26qsmkfctbhx +five9two +4ktptmhxfivefour5svlfvsgjsvgseven1 +eighteight8ninethreefourlqhln3 +seven3hffspxvklheightrx +eightjqjhzvzsixfour5llnhdvmf2 +5lptnqzmk99kdqqqjmthreeone +rv1 +5sixfive +cninethreeone1sevengpgqdnpk +4vphpshpsqngthree65fiveeight +3zkvgntwo3sixtwo +1gqxgxbdvmrgd64 +threemctclrrzvqzdnmkpgffive3snhxseven +dfngrsix5nninetwoneng +7ctbp7hhgtsevennine +9jrnsp3threehvnzn3 +48onepxlrpf +threegrhsffmlv5sevenseven +two7eightthreedmsfeightsslvfour +xfdljlbdjckkdzczr362 +four7mfppkmklgrmpmt91threenplqff4 +3cszpvddndjfmszrf +qoneightntdzfsix5lcz +fnthree1 +two4sixbmrndhsevensvxddjbdgmgdtlncpzph +9ptssvrgv +twov5 +4three2xqz3 +xxqrmhzdp2gnxscfourgkbkgntgr +2nzxdfxcvfive +sixninebtmtrvpmfnpdvceight3 +four8sixthreedsm9 +9blpvdpfqkghvh +3oneeighttwo2tflmpdjzq +fn3oneninesix3n +jgcd4qnbbxcvjqlthree49bfchjz1 +glj8sixdpbdpbqhh1rvgmbcqx +threeqfj66 +5qvhpfjkkbhjbkkzrlgfourlzvrvpn2nineq +3btvbbpvpl7ltf +bfxmkcn4sixfourglqjtmzlgj2eightfiveeight +twotqfpfive3eight +3threebzmcvtknthree8fiveone +gzkrdr1 +4cgvpfljq4szjk2bxlmn +tfdkhxtgj9 +one64llx9zjznbtxphn +7twoninenineseven19qjhhjg3 +cxflp2two2eight +vrhlzfsnfqzfqf3dcvzhbtpdkqdxn8nine +bsddhtzbpgn1llfcgm38 +one66twofddhjrkxjssixkeight +hmsevencnltvthree68twonezmc +3fsrrn +twofourseventxbcqzz8p +4121knflgt +tplkfivejlvtfm3tmcgsevenseven +vhhfhsfkqqeightone22four +98sevenfournine +nineone199 +2sixnbvpfrdvcctmdzxl +8gfbsrmhpnsclvrntwosevenseven2three +3dnhgfvhdffllnine +3frbnkjjbhrsixonesevenxph7 +five2gmxjthkksfiveonerj2nine +bjkvk6three5jtccbcvntwothree6 +4snlgnj6ctnzvqmphkzdcj335 +5bhhjhrnzftwonine4 +m8sixone7 +twomrhtklhdsdsglpncmffcqhthree4svxsln7 +sevenmzqn2hstdtfivehjhone +vqdhc8twocztspvsdpskgxtjhgk +4fourhthdppjz +446gfskjqrlvnqbm8xpnvq1 +jzcdttwo8xggone8fivezkzrjzn +gqfhjhkf7 +ds51sevengpjjnmxtdninetwo9 +twopbqhjnjpkl8mdrkleightrtlrhqn +3seven3fkb9qcrfkknht8sevensix +hvzrpbbbeight72jpvkhkjxgvxqjfqfour +eightthreeonev4vtpnbpfzch1one +sixdlds5twothree +eightjtrpdfxvdlkqmrrbxbc6 +5mtqkkxsqf78nineseven +dkkrkxxonevjqdthreen21ztnzlghmttxmblpp +ninethree43mrgng6jtjm +fiveg2three +6prj9four4rtm21 +one2vgvklpcqnxssjbone1six +8glktlgcfsevenmkjvone3dgjjfkd8 +threeone6ninefive7three +zfv2c2four5one6b +qxtbbtwo7jrdgxlcpxbczxhnpjthreetwogcfl +vfhgqjfqfc78eight +1x5 +six5four1four4 +2fiveshtds4oneightsjg +962seven58two7 +7mrtndknxzlzdkqcfjxgz9f66 +fqckxpqrjk8eighteighttwo6fivejps4 +drvglmnine7three8one7twodxtr +mbnfjkxptbtjmgcrtkhxjvjhjnine83mpnsixfcmxcbnspx \ No newline at end of file diff --git a/2023/02/day2.py b/2023/02/day2.py new file mode 100644 index 0000000..6b7d290 --- /dev/null +++ b/2023/02/day2.py @@ -0,0 +1,9 @@ +input_text = None + +with open("input.txt", "r") as f: + input_text = f.read() + +for (word, digit) in [("one",1), ("two",2), ("three",3), ("four",4), ("five",5), ("six",6), ("seven",7), ("eight",8), ("nine",9)]: + input_text = input_text.replace(word, str(digit)) + + diff --git a/2023/02/input.txt b/2023/02/input.txt new file mode 100644 index 0000000..8fb96b1 --- /dev/null +++ b/2023/02/input.txt @@ -0,0 +1,1000 @@ +tmmnhlxzpj1eightldxhjnone97 +9fivekfpl855mjmfdqzvbn +two29eighteight1 +4md +sixbrqklb347 +6sevenninexpnbgbr11three15 +4zggkljkcqthree7 +7lxjkqhmxcxsevennhszsbxzdfsonehnsrcfour9 +jtpmfoureightvtjmlshbfour6nvjkqnddp3 +twofive2fourfive1dvnrrvjr +twoeightnq6ninepxv +39sixgphfvninexts71five +seven3two8 +six59jhtfvv1five6 +7871three915 +prrvrjlpgxpjdxfchqonepchqbhqxx9nbrvh +gneightwo5txxzpkctwojvrcgbd9 +329 +5mnmpsevenseven +ccshz8 +threeqthree5eight6blzzh +moneight3onepkjskr9 +ctdk8zkhzzkt +nbfrmvlnmbeightbxs55 +six5mrrvsxqhqj162sevenntsnztmsdbnine +78dlfqtsplmnbrtfive3tskrrjnqktrkrfdxps +rljhmtwotwo5sevenfourtwo +6drnzxz9fourfourfourxfxsxhlzqx +7two8dvhghtd +five277 +four7mfhfcpqjjvlxvbs +sixhdxxhrzrsjthree2zddffivevzkcppvpshh +hnsnbldnp5hdfzqnine +kbdfmgjtfxzszl6fourtwo72eight +4fourxrtvjh +dzbfkvzlg6ngnrsevenzfqmlldc7 +eighthg62txtxhkl9 +5dckmbonetwolgsixvvftfive +twordkznxxffour3jgxhl95 +eightsix4twofoursgdlfkjonefoureight +9qlh1ztk9 +fourrmbrseventwo4pmdmlkp +sevenfive6gbcfslxhkmqlvspvgjgpsrffive22 +34threejhd9one83 +577twomg +threethreezcl9tkhjgqhknrmscpppjnnlnrtrx1 +tjxtcnxbq1sevensixfhhnfour +4six3kcnkonegxpfj +knhpcljnjhfive5seveneightck7three +rvrr1 +jjqvphczpqdmszgbqnsevennine81 +54568 +97zvmkrslhzvvrjgknjsevenfive1four +8onenine4mpfdsixfzhtpz7 +rdgjphdxkmmrh6fiver9ninetwojgxpghhp +gdhk3twonine91zzzmmone4 +qsxvlxkfnpvdthqteight24nine4 +sixeightthreesixfivevf3qfpvzvnt +five4nkqfcdpqn3fourcqfjjkdnjxf +xkpmtmhxlxfourvdsjmpsltr1xk7 +threezqkb4 +h2ckfnlk +kzngqxt27fourtwo +lgzhoneeight7fivenineseven5 +2fivesmzgdnsqcm +4n442ptkfx +sbkdpn2nhdjqc +bh22eightdqvhpspx +hdmdg7kjr4 +three3jttm7fourfourckm7spkhqdtv +1twoone2911 +dvhmdbjlhfqllkrgnine1ttjvczdsrk5trngnvlnfnone +two3pbdvzqonefour3bzktxlgdeight +7eightjcjkqldhpqfrlt9nine +2jvdfdcsnnsonejbxqrmhdjthreesix +7pxbhzglcb283sixnine4 +38npgninefive2two6 +jqeightwo7dzfcxppxgtsixfl966qzlbpczz +sevennine3bvdzkrjff +25hninehtwothreeseven +xdrkprvdmd8fiveftwopkcbfhtxmtkjmklzpphjjtqjfvvh +2slfjzgflnhmc +2bqnbkd +twothreeeighteight8gnhccvzfour8 +3six2two3btddfjt1 +eightbcmnpnmq7hcqd1kkbjmtnlcjsixoneightvrh +v99zsseven92five +fourzngffive1five5threethree +onesix36 +sixtwo6qlfm6onetwogfive +pkzjfive4sqknbg4gqbqmdzczcqrds +9sdgnqdnxqpjgmfourfour8lbrskpnglp +sevennpxtlltn7eightzfhkltfsixsixtwo +xjhfour9 +7rmtwo +nine1seven8 +oneqcnrjbqnbzfbxz4eight68 +seven5four968five +lhzgtxxdr7seven +lgconeighthtrvbkp17one8jsxhbxhvqr +41three +seventstcfbjbmsixtwothreefourtwojsbrdlml2 +8one5nbpmdhcfjhtwohbjhmzttmr9 +cvcl644eightmzzsqstzjkn +mxgj1seventwolttplthree +33nine63twosixrgrrzsgj +seveneight1 +jqdp16six +893plhbfvfc2threetwo3 +6qhfhzsclsmvcpxfjxkl +two8nine +sevenfivetwo1pn +threeone4fkpdk81trqfivepgrvdbd +8rtwofhfthngbnphrsn8fr1mq +235 +pztmvdb9fiveeighthgqvnine6 +8jqv +9sevenhcdntl4eight +682onepdphj5 +fstfvxrxt86jkzmlvnzfivethreecbnsevenfive +eightfive4ninenine3ktndjdhb4 +7twoflphhdcs +9thvn912mdcpfn8 +pxfvghsvtxsevenfivesevenninecck7onenine +sixvd2xmnxrtvfhcng +fiveoneseven96eighttwo +eighttwo6fourgggthreefzpbxmq +9zlkfnbfb +nhmssnx2 +oneeighteightfive5mlzbnxlgthree7nzkhl +rqrxzkpmglsixvmvrcgtlptkz9grhvhstknq +three12five44onevglccksrpgxkc +3oneseven4mjtwofour +fmcmjgvbfonesix3ninemninefivethree +sixvlvxxtwo77 +fivefour4 +51six +37lrmmfmjjn8six +twozzfcz3nineslvv8one +1fourninesix6sixmjngkmsntrnvmtwonehrn +oneeight3four12hqnjxlfxtg1 +9dlqkqgbsvxqnrk +1cxfptmfnschgkdl +threefccrrscjcg194 +seven65kn34five9 +2lrnxvs1 +nine91bqvl2six8five +twoeight9xkmmgkmkhx +rpspvmxkfqtknqpbvcmb9zrqvkzgszbkcone21 +5oneklx3 +fkjsjg5seven75gjkh3 +eightrccsmczqbn92eightcxgrmpsljztwo +pktwopzqjjmsixshkkqkkxglbzqrxr6 +4mdfqlone43nine99 +34fnkjkfbqfbfmnbskfzvspgrslljmmseven +89one72nine4g6 +two5fjzmceighttworqjlsdt6five6 +pneightssjlhtzqvvzcgxjczqb8 +9jnlthv2djkxqgcfmlzvtwonek +fivesevencqmhsd2zdmld +fmnmqbnhkg1nnsnsdjhfivenvvztkfournine +8zxcqlrftmvvmvg1ttcpclfvjggblp6four +prlrhh8sevensixthree +kmdnxq3 +653 +l6vntwo9 +lmkqjnxjrqqcd2two +vpfvlklftthreevdnsnvsix2 +33ninembqcjndfl6 +two6rqvdctwo +521onethreepsqbgd1six +8k +qxqhpv2sixfxzlcdnfhdj +six8gpxkmlqvsvx2eightfour7 +dxfrgznlvtsxj2fourdzdml +tnjfm2onetwo92two5 +eightfiveninejncfknkkone825prnmmxzcdp +9sevenfive23 +sixninelclnzpdhd7vrfvsksrnine1z +sevencqsleightone6 +nine9seven495eight7 +xvf6xdsrlqcchrzpskgvfiveseven +three8t22eightmhbsfnkhqdmsqpfzhthree +6oneldljnzdsevenbvkcmgvhstqslblgfxrkfour +9ftkbeight6rpf +8lsmnpbdt6fourgbrfhpmjgkrlc +2five1hlgtjplhfive +ninesixhqdcsxlsm4991cmlmrkgrgqmdbmtxd +zznhdgkcrq21three +qdgtfbzxh1 +loneight7ninesvjgvfsmfjd +3mj7313gbxcdcnmvjzqkbg9 +vnxknklscmhjrxnzbp9qzfiveeight +2lxbtvthreetczjsonepjmrsflhndone +jsixbqxkjlzxone8onefbqgnhjmnq +fpsbqpx5drptgkvtwothreeninexcrm8four +rhlcnnzvcone484three5 +6threefive +sevenrkldjeight1 +16744qgmmpxxn3nine +xq1eight +sgrfourc6grhd +9three944six5rnzj +ztjfqjzzsq6sixsevenseventwosbztgl32 +eightztmtzkmjdvjxhrnbrph3dsdmkrndd8zflhmtpx +two3onevgrjshfl5mkdxmdkkrtthreesix +srkgcdmrpd5 +4ltngqjpt2five +seventvxkdvqlbd3eightpmjpk +3three5 +nine5d +mrrbl8 +frvtwojcvppjbtpp3kpzzf +eight4oneonefour +nineptjfjfourthree1six +jvlmgcpxgckgzjpczfvjkthree2 +twotwoeighteighttwo7 +cbpf5threedsvlvxfcx3fourone9six +17seven62sixjklrjqphfcbvmnscttwo +jsix75qcrrcjthz5jnmxqsfoursix +sevensrkcschst2 +two7nine888fourthreenine +3threethreepnx5 +sevensevenvlttfbxmjg1five +233eightmxbmdgdthgxgv +6three27one +fouronecqgspprhgt8rzshnskmn +364dclhtvrkptqlnmjkpkpjxtrfm1seven +3cdf61fttxmkpbh63c +eight1dpdmptdnineeightsixeight7rvzz +four8sixsixfourldrxfszpnlcmkjxnsrqrone +krhgrd2ninesixxftmtq2sevenmkld3 +79onesix +twozjgx1qdznxdgzpzghqf +rvpfz675fpzvmskq6 +dnnnfxcrxhninefourjgdkprtqbv63 +rhndq8zvftnvqm8 +5onetvnhptcqlm9z1 +49nineqgsjrz +28kbcjbkmrvqninetmmqdjjhxoneprtkhdsllc +threesixonenine9 +threevthxddrxzqbcninepmfczcppskbj7 +blnxkpbbgndjdsx6 +vloneightninesixsixchp3eightnine9 +srgcvgghjjsixgsnqmlfive672svfb +glkzvd84 +vr7two24threethree +xlfdr1fivelfxvnjpz +3frsxgsmzrh7 +4one6hrtnb3 +eight44fivesevenrhsxbfbntseven +9two9cfffqd +pbqp3ninegqgxvpkdtjnqsb3zshhlxsrkrvjm +7seventwothreecgbbvqftwo +3h +7bgfrqgmqsix2nine5xgbr +zdkqfshrthree4nrttmzjb2one +one15 +2sixdx4 +128ninenzcfmbgq3sckqrcnkvgthreektk +seven2zqgrjjsq1four8sixeight9 +4four11two9dszblknpzgrcxbsmp +hcxcxjpndpeightfourf82three +sevenrpsevenxzcrp18five +rcklcnqxgbtszdxseven6 +znbkksfjtltngpdgsz2grsixxszeight3 +59cvcvfourvcvvshxone4bqnmdpr +sevenseven7 +2sixone9gkzkxone58mpvpsj +2bhhzpkjvtbpqf7mkrskcqfourdbqfkkxzqbk +three6fourtrqpjxzgfones8 +oneeightfive19seveneight8 +hhjsqdqhsqdvkmnqeight26scjgksix +sixfourfivetkmvpdvdkfhvfourthree8 +6264fivendcxsmjdninetwo +ssixsevenfmmzpxddc4zbvcvb46 +tqfgpdsqccdfvhjtwovsnine1seven +ninesvdlpthree29k +gnoneightqpsgskpqsjsmfiveffzfklltxthree7vf +fourgvonelxrqbddksnqljsmqr18four +four18threethreeeightnine +nz7mhblpprsgpg +nine3two5glbgtkhdhv87lptxgnbsl +5onetwoone78 +6fourtwo3smkssmcvpsv3five +ps7xxfxmqmvkzjtwo +nbsbfqqqpt52jvphpgp +zgxvgqjklftvtrmfour2twoone5hknxfkr +4two6sevenninehpcpbtvrgc +seven4one22ztmlsc5six +rvtlfsktxp7four74foursixlvg3 +threetwo4seven +kdnstttczthreeonetwotwosevensevenccq2 +9sixqjvcnxkvbmqrqvsskf81 +3jrdhvjsknddqdgzfmhqcdmkskxfnxvxlqtp7 +39brqqqlcjqk4one +onedddpmznxcd7three +415nineonerbpvzxszfone +fivekfvsxdstm8 +47sixcdsstnjldeight6 +6threerhtchlzbpssjqdhs22seven +foursix9 +mqqdrpzmqrsixqsdndm6mbgvkone +czreightcjlznine9cpdtdhcp +298onespqbfmmm +39onefrfkvknine9 +7hsdbsbfrft +shfpxrfrb45rgnpcrqdtsonethreezcgngh +zbeightwobtdhr9 +9lone2zrbfzqthzkrrnine +lvhlkdzqsvfive4bpqvkdmscfivem7seven +fcknbkcqrxclntnine445four1 +five57gnsfiveonejqtzkcjmzp +threeseventxbszffourtwokztjpcbvv3three +mspeight48fourxxvxmxc88 +one67 +gkl3three2mcljzvkpx +threengltpjhdhmjr6sevenntcsqqf5 +meightwofggvmkr7six7 +twoxjcbfjjcmq1kf +four7mseventwoone64 +7hnhhcjnrxsevenffmjlvhnjvjbkgzqmhmonesixhhczncfnhbgsg +hppxtkvseven8g314 +fivenine7sixfivesixlmnlqcg +4gdzjjjsvkl5sevenfour7 +bgkldxbvsqtpdf17lgvbl4 +3zfm +dvoneight4 +three1eight1xpmvzlfiveseven +5ninethree6dvq +69lgmqxpmdxtq +6one8xszfmzfvpxmhv +three971 +tdklrczbqgjhhpz2gkh92two96 +6lrxbnvlh5kqqzbksixmkhfkc +5ninetpqplfour4 +eightgjfjqbzlht742 +lvjtvngcpl2four +nineoneeight9twofivevpfhtkkdmzz +sixcdncmsrzzt97five8tqjthree +tnchfkdmfzjsonesix76 +fourl8ninepjbmkxzdsjsxdj +twozqs7 +zgsggdkgkpdlr5one +zzdkcsevenqggrdzrcdllqqpdnrbsevenvhsfnr68 +5sevennine6t +4rlmrv +six5mlgsevenrflgjfsn1lrtcnhhsc7six +6ff1six +nine87eightsxrqxj +vnvsfqllfbh6fivesixsjpgzrvdzb +six5twoseven +5fourthree3pszxtfivesixtjfdnrxt +seven7jmngpvqnkf979lkgzhbvbltztcsqhr +fmrjztlfsqrone88 +ggjpbpjmdgsix9one +76fourlnjlthhnsix5qqjsxxznr2 +1ninesevenhlbeightfour +1slsghqc +five4dhdkdvrcpvzcckjrrrjfsonesix5 +2lgkbfbbfour3 +5lgkccrp3djlrhzdxck +5kst8fourkljsstq4fbvjmfznk2mhd +3ffmlqrxnc +khxq29 +gxqbkhrone22371lvfsbdvgxt5 +ntfpgz1 +mnbvfqbrgncqlgk5eightxnjgslfqq +four8txcjdvjcqxzdhlthreezslht +933fiveonetwofkprnvkd5 +5pjcpqnqsmfqbtp85kk +6hcvfgzpl7six61 +3fzpgdtxpntlcfptlks4 +5five8 +two2mfgrdn56sixfour +llrgftj52tpdxttlnqzpzfsix +twothreeeight2nine1gmz4five +kgmjhhxl3vk55six32five +twotwo2ninethree +nine6dgxbvljkpcfourrrc28three +one1rspjbqx +7lxmkdvhhseven +sevenninethree51 +fxbstzjvtffive185five2 +one1fivefivexhkngdtnkrbkone5two +7skdzgrpcreightwokq +6znrpdhnine6621four +xsztwo2gjmqtfqfrjhtzjbeightqhgzbpcdeight +one597pbr11 +lhnlmjml2onetwoonesix +86fourdgnbvgsnrd53four +2dnfour4mhmkxtlnrjone3ninefpthhxn +1m +8pmszqtgzcz44four +bplgrtzvvqhjgdgfourqbt6one +3three3sixfdtqkmsnc6 +8fsfthree2onebjntcx7bsghgxphp +three2779sevenfive1zt +seven7gxntwotwo +1tmknl +4fourckhl5pvkjhzqnxp3xzjzcrgbdct +rzddzgbeightxxmgspvfprpkpmsixtwothree5 +8xdqsjqxddhxqvszjjqbsqgpkfour1dxckbnsgfn +582jxgfivedmtwo7 +drsoneight61 +9nqhrrtqrsbbjmlpftpggkmsvhd8 +oneeight55four7 +lkgfnd9leight9sevenfourpcxr +3fourmtmsgtwothfgbxcs2tvvzcsshb8 +2onehtgthreexfnbfrhnhrpq5six +threetwoonen3fivedbzbkzqdxs +gjeightwofourqonesix5nine +54oneights +threesixckkpbcqtgjninellm4dhvc +sevengnxhjjmjbstvlp94sevenfiveqprntdkmn +qchrbptnr4sixfourdzgfxkzsgq55 +lzddtfgthreefive26 +12nine +cfvscrfive6seven +kmvpjtmhhv2one8 +5eight342 +frfngfnx1ctxzxfztptxs89sevennkdvbkq4 +vhtbh1twopngjtq +75kfdrjsnvccninethreebqjh +rjgbkhrd3three8two +psgdspjqqqmd5cdpznxfrsshk +7fourqmtbg5hrgxrhrm8 +threeonepdgrrpblg2xhpqjrbppfive +sixjtfzlnmninerztjlpcjpcxrj3ms2 +csmqjmrb53sevenninefourthree +onetwo423 +c5fivethree86fiveeight3 +2pdpllthree53dxbmmrvn276 +onelnhg4hlbsgzhcm1seveneight +stwoneeightpqzflflfmvmqone7 +86fs3zzsfrn4 +xtlzjxthree9sixtskggjtzkt2 +brjnsc7sixlrmfgzdgktsix5rhtxt +eight7cb +hp6one89zpeighttwo +threenlgmsfzn4 +1msjbpksxqmfoursixthree4three9 +zkhkpttm5seven +p8 +frjrvnone9two +5sixpvfmvfivevtr4 +qbptwoneqcdkqqtnmfjrpplseven13one +5four2one891hvnl +nineonethree1 +beightwo55sscfxvjmqrbcsix5five +sixseveneight82m8dlg +f5six +fivedsjjnpbmgckfpvbfqmhd7 +eighteightthree7nine1four8 +nine2cnxqxvlzt7frsbmtfcfive5 +one8eightfivejdg742 +twoone6 +jqsrmzj1seveneightsix +two7five9rfs12threejmg +rjgggrmxkzrpjmtt4fouronesevenninepppdtd +257sgqvjghcneighttwo8five +threepgshzbxvpfivexmlfg176 +lxlncztzvdzvx1hmjgxkv9twonec +ppfftlnksfmbhntb1twoone4qpgpxjrdqf +tdrthree5gxfq7gv +fourmfl8zl +ckhf9cvcghxj3 +vcnfvsvvrbninemf3jpnbqdv +37ztslhzzlv6blm86z6 +glgsgtfhhx7gpxfnfckdjhkxsfourhhv +twoqmtzzktfjs9vpvpfqxtlf1nine +two8two6twozfgvlrdjj +seven7k7pcprskqtp5seven +1bvgceightoneqvhppcfjsf +4qjonekhqjsprx +rmeightwosixhhthree484 +6two6five6ninefournine +one2864onerbcfdfnr8 +threesixoneone3mbz9threestddhjz +rprmjtmjtmfourzpmfqptwoone533 +one6foursix +fiveeight9njclrmrksdqonefivelvc +three1qkrvgcbnxfour +5ssqddjjmmrkjzgtklztpdnpd +four7qnnfnvgkzlldmcnnine88 +four58fivesevenztqcxrzzqhgjlzt +one24onecxxlzllskdtvsevenbq4 +ccjjht34483 +8onefourfour8gqh53szjqrdhzk +18six +8vvbqzhkgz84four318 +mzxzsjfour64seven +t1 +89sixthreexhtbnlcfnthree +hdxqjnine5xp +seven542nkngvnndrrlrmfbxdntwonehhc +ptwone6nb58nine94twocmkf +six64ninesix73seven +seven91sfnbjsccqdtzgleighteightwovqr +vkcvdone49fourkbm1one +9sevenrg94 +foursixsfvrvhgvc1qvjkj +fnvtfttwo847 +vgxjts7 +6bxjvpksix5 +qxlpjg38qkmxfivesixeightqcffhsxnrk +1mgjfrfv8onetwoxrscgjlcdhnine +rmpvtfkmxnzrfsxtcdj36one +569fourfivessrblkq +threethreezvvkdjzkx5xjxnlglfrt9qdkscsdf13 +qcgd4cbrjprvnineqtfcxnninethree +6six9fhhgnvfghsix +ccjrrbkj56zqzbsf797mxsq +3ddqxrm6one +39four2ninetjcvfzhmgpsmsxrjjseven +fourtq95fourfourfive9 +threemz96onezsqjzbrb +txzgzgcc8threejthree1 +four4ninethree6cqfbfffptwo +one3kntwothreemzklllzfourcjlrnmb +sixone9fivesix +8jsddhfppj99 +5threekmxdglktv +onemxgbhqzjtgcxdmkr994 +2vsgrxcrjbkkp15 +2two7rfvfkzzmpdgqtfourtq5one +ninecqveight5tntgtm37 +38ngqrvhjkfmcl +2fiveeight5 +one5ckh4jtjcqcjr54bphzndqrvnine +8bnine1fourone +nine1sixpbckqsixthree +one7zllzvvgklbkgphtpv +6fivecgrlfcheightonebbonetwo +dgchmmqfbzcjcnpvttcp6 +1seven73ltpgbts +1xsdvdt +qphknjcb4lkzcqdghd3threethree +8eightjxplnt +six5fnnrzghlnjsevendmpnnonethreejvmzgkck +threesix2jjseven +8twotkzfbzbbfive +6onehjqdvpbbmgpnzjjbxltwotwochb +seventhree5four7vgl +seven9fivefive7lxqsldd +xjlkbctseven1 +5sevenpslbmmqnrnztgmdtkzf9gbs1 +bsndznhdfjeightonetwo58 +rxzf7n9vb +4pjhkklkhvsix8 +one11fivetcnzcpzxcssevenseven +one6eightonesixeightnineeight +7xgkhtrpmtwo6five48six +dgs4 +pdb1gtnxthxqeightthree2njhzjtnzfthree +6bstmrhdhhtgvfbqjq +xt68 +1seventwo +79qtjd6 +rhcrhmtmmxcnbjdhqtd7cdblltsljntkbcqnfrchbfbkhclseven +hnlhz15six263nine8 +gxfvnsdqjdsoneccthxvtbxxzqbzplfldxx9 +3sixgsdt4ninefivemxtzzqrztsix +onethreeninethreetwo6pldp8 +n88 +sixseventhree5seven1 +jzrzbhvvpg881 +niner6sixthree4 +4sixfour9 +twodm3dhsxlvvrghqbvfpqvqlvtxdjzjhqvzmb8 +one67three17eight +onefour1 +sevenseven5four23 +qcvddc8rmmmffhjvthree8 +68fmf6 +xcn5 +nineqbqhkxhrfourfive7lftzls +zkkntfcrpthreefive8five3 +ngnzlh81two5 +ninebkxxrvrnh4five +7327sevenspjjxxcxbzgsztgnr +7l7ngrhkvzqftmrkd +2rbthreedtdlvgfthfive +onenine5dzvznlkht1zfnbspkg2 +33tpfdsevenfour8four +19four5 +twotwoone398eight6nine +dcqgn86sixglgbxnp2 +six9vksix5273 +fivefourseven12sevenjmdhpjpeighteightwolzl +1fmqcg3lponetwo9 +tlgbv6fqpqbxskfdmqfour7 +9hqbtt6sevenfour5pfgjktbjhzr +ljlfssmk8pbmdrzd +ffmthzmtwo67fourfivethreefive +kjrnrgqfseven2mtcgtwo +hkgeightwofiveeight3rdtxkfvtwoldvxcdm1 +seven72k52 +xnqf8two7 +sixone5two3 +5eighteight5bsxlgbrpjh +dzgngckszf8fivekpjdbfl7cxprlclfiveseven +threesixthreepmglrtrvxkrzzkq59 +fivenine1eight7nine +9mljfqfjxhzone548 +7soneightpkz +6qq64gfscshkthh8eightsgcmpstwo +dsrvbxvgjf8 +7zzndrkdkmeight3zhgnpgfmrnine +7sixzqmthree5frgxzlkm +3threefivefbplhjtwo +rspdqldldtsr7seven7tzzhcbghtr +1sevenfivejrlzn +threeeight3cjjmr5 +858shrxcprbzjpblfmqpxxgqsjcvr1one +zsttpjninezbkxnvzcdhxhprmrxnrqmvl9 +eightfivefour99seven9vlchs +four1dpgsptmvvqsb +rzbvrst5rone5 +7eighttwo4sixthreebgpskqdkq99 +vskgbh1pj +4vpsznm4nine +onemplzkfckh7pdlqrbeight +6fourkrxslrpqdsthree9eightczfkk +2xbmjgjfour5four4four +fpckvttjznoneptkmtbtgsg12knbzkxgsr68 +twoxmjmqdfxjptwoqzpdcrcfkplklthree3fourfour +8sixnine +l6 +rpskpftttthree2bthreeeight5three +five28fivedpf82eight3eightwoqnl +lgdgpnrn7mklfpcggninefivejvsix +vtdpfp21p +fivefourlnbjf8 +bqnx98sqdpqeight1 +sevenghmdbgvninetwo57 +jx9onetgbjjvhgqvqrstztbthree39 +ptgxlzrp858jkdzgkthreetqlr +2threebmjmzflthreebrzfxrfive +twoonekrkkbbjrfdbpx9 +43bf +eight5five1ninep8three +fournqvnzhklffivexbxpd5dmshsx1 +fournineeight572 +zx7kqgtqv +1fivethreevkzvnn9five +5rjjcz3sixninesixkrjnblg9pnnhzkjd +97sevencplhfngjpc8four +onenjgphpfqr8oneninefvhzcpmdmbsix +threefiveone2snbmscbmkxlcqqqcggflvcgjrnt +pzzhl5 +xfour2mltvkkclcrzptdfldgone +4llllgkdft1sdsixeighttsbxtg +3onesevencrrkrdlbg5 +7eight6fcfive +xbpzhnp6threetwodflsfr +lfkjqcvvlcpxbvp8dnnxrjzklj2strggkjxzkncs +8one2xqjdnine +ninecdcql828four +pbfg1sbfxcjvthreesevenhzdtwohnxdoneightsb +1fbcmzflvkhrkkj3veightonetwo +4threethree632fourzqczbxz +1sevenfour38 +mlrjnpd7eightgnjnxhgz5seven +fiveone9 +two78 +9683klkrcvjz +nineplcvqlvrninenine95 +148hzeightwor +ns6fivemzqp6 +58fourxqsqdg8 +rmjrxhzbhnzn6jgpgvjtwo1hone +xhzphxb1xlqkktxtljmrfour +five6txgsfvnxqbnxljrblgnvc +1threelzq +4gclpljthreerqpbpdhftonetwofivevqm +six5js +twobzktcpscjlfbttxbbtgqvrldrksbvxzrxjffh9 +five1142sixninetwo +8vxclrfive7hxvlgr +62sixxpnbhlhmnlgctgqnqppdczm +9zvfzssqhhjqleight3ncm4two7 +cvsix7cts +eightqnjbnflkqsmdcqrv299 +sixjqlmpkgcmcmcp6qsdpqpdseven8eight +79gnncbfivethreevgfscv +sb4gbzcvtp7foursmtdszdrg8 +fourthree6546 +2nzjtvpsr53 +9pc +nine3eight25eightmeight +pmninezgk5nine +xnrthreeseven9threetzmg +7one5gfbn2 +vtsqhzclv89fh +6sevenfivefiveeight1 +vxcnbtnine8two4tvttnmfjntxmxnqgbhhlonegvkpgs +peight5shvjcng2 +szlpphx277nineone +bhbvtsjpsflkcmktnpqjlzsixhhhxl9xtkbvmszqseven +nine3five2dmgjkbctnnnsix +8threexgklkrz1 +fxfrqrxbrkdfivepstvtqhlrnhvqbtzvfnineh6 +five6gzcdrjxngf6zhsvxgeightninegp +kgqcnddc88eightonetwoeightxs7 +eightsmgmfourmdjzvtd7 +sevenseven836 +sbnrfqzhk7eight +1hkxbb65two7mh +dkczbhqtpvcqfrbmcdcrsixsix37jlqfninenbqmtfzcb +zcqrcpbfttmslbssbpklfrcngmszvvpjqf4rlvqxlnchrxkndbrtxcnm +7kxmzxbhdqsix8 +13 +lqlbfzxzfkxsdbz3six6 +sevenfscdrdvtjeight9threeffrvxdbc +fivebnn246dlbbhphqqgm +hrfqnlcvltfour2 +vtjfour3five4jqtwo1 +fivejkvczdmqzmfourthreetwo6fourtwo +ninesixsixsix3785 +six3sevenninebcvdltmcvgn +rdjqktrmtwo8cnvzv49twoneppp +eightjmcc4onefive3 +3mszqhnzqdhbbplcnq1tmchrgcltnq +sixsevenfivefour5ninesevennpjqzndjx +15fiveeight1fourqprkldhs +one1rbn1lnmdmdf7sixbjxv +pseightwo3jrvcfiveninefive +rzvjn16 +55eight7285ninedf +ninedgone9 +1two9onetwosix6nklsjdbr +9four8xbgnxgs4 +prqkonexszxfpqr9eighteight84three +xkgpnzsptwoseven1foursix39 +ntpkrjggj2sixkznljqzljonemvq5four +4nineeightsevenhgkflgvgqs +zmchljrjpxoner7tgxjdkmcctzrdcrqvkmlnftvm +439sevensix7 +91xkrmztdbpkpdxtrzkrtwothree +tfive11l +htxzbxmlthreesgmbh4ninenine6onefour +4dtcxqrv63glbpmznm9 +3shdcdzzqld4sixfxdmnmjlz7 +8strtbonenine7sevenpcqjvqclcc +nccnc1vjslvtddgcddrfcztqbxvxdnineeight +826nineninelpvnkxzfive3 +7llqfvftl7 +twobdnbnine3fourbsrvpkqsdjxcvk +onefivespnhqrxjzmfive6nine5 +9lfpchffgxthvheight +brqjss6six8six +sevenrfsix7sixfourfourxbjzvtwo +cdtwone863 +eightzvn3 +8252nkkndmhpgtqnb +1pqmbdcrfour4 +263vmbrqqdtrn45ninesix +sevennine4ldhlmdnhzjqksbkrg62 +eightone5ffprsmqfzq6 +fiveeightnpfbdtdbhtwosix11mghg +2seven82six3one6 +81five18nineonemmbsj +4eightbjjjqnc +sevendstdrhpfxfnnhrddppms9 +kgtptmpfhk4 +seventhree6hllpmnqr +cpn38vlpclqzqcgpbdmlbzfssx +96fiveflq +bqcxmrpzql5vxfnpvtwo74kdhsvlkzz +pgxqcskz611bzkhmnn46 +fourfrl7mxvtkthreecfkpmxqlxhdf4tcgrp +3dhzm +58fivenine1nmhjdzlctj8fplnhmtwonexh +one69 +fivethreenzsgqpsmhronetwo18 +five866sevenninejbvm +fourmtnkh4 +9ninelzqf54 +727 +ttwonentrmkxckfxonenine4mdpjhpkbrfzc +fmsix45fivesix +767klvdthjtwo +pnrlxt6hpttnlp +rbtgqmgmthree44ttvone +cgspmnlsl47nine85 +threell6dqsnn67 +486mz4mqpgkxlmdkp +rgvlcpnbnch7flgrm4twofive +hsevenfourcxseven4three +87fnbcfftwozxnnqmqtmp +3qjfnzhhmxt7 +leightwomtzt36sevenhgcfivetwomskfour +sixsix6nzznseighttflzgcbzcthreek3 +eight4725nrpbxfonetwo +scfiveeight7three +onethreezvxbfdklnhone9sixeighteight +sevenhcone5nineb +dkmmhkhsmnmtonetwopdcx6seventthhgkdx +rskzlrdm2six +one8cstbffccz +eightsevenzkkhlcxhmxthreetwosixone51 +82pgkjcxmcmv11ninetwoneld +ftmhgvdrfxdzrbhqx78 +xlsbhctwocvzcxxsixfourtnvjnhrn9one +6jsdgbtbzsbxvdkdlrdk2btonellsdxzfrvvknsrgml +fivepkblscprv49qdztfjtwo +one59795foureight +five96 +6mqj +sixtwonhjhcjhmvkjndzphgkb7dbmngxbthdbkqbpeight6 +569 +4svnndr +xbsfhvsq22three24 +1mms2nbmlsmpkrjvlz5 +gstwo25ldvfzjonetwo4 +mkbsmtrrxljdrxlnrpcrhjtvtmqbzvkld5zvphtjflvmvhqxzrnine +one59twofive5gkvpjlxczb +c5ktp7sixfoursix +mdlrxxfour4pxfour +78hkbqnggsix2sixnrmx +nine2mnxlh +brvkttkjvrp8qpnfgfjhpn +threeseventtpsmm2eight42 +grrxjpcxstwo19ninek6 +kmprxnf1seven8trnb7 +onexmrjpkhdvmfour7seven +2fivetncrt +four5qpbmfxssixbjfdcdsixlcjmhsxx +two87three43 +hjkrr5nxsczthree5bskmeightln +18threesixhjqz6four7lcrrzr +onezfourv1 +rglmnronesix7sixone +6cffcmlfkfbqgfivegkxsf4 +3twoeight3 +six4five19rpjvktvxlqczkcxttssgxcztk +7threethreetwospzk4 +gkhgv3 +plhsjbdhchzzhztdgt4dfkxeightngnxtgqqrvgj +sevensjkvk15qvpckmlh +znvljxmvjc7eightthree66fourrzgkvrxb +72pvpmlflqj4two4klbjmbrfxrcs +mcpvlfpb39 +3sevenlbfrflzeight +126 +78one4hqphnvntqt +9rmpzrfsthbfourthreefive4d4 +one7eightthreecsxj24 +ffmk2gvdngdjxzgtwo55275 +2threefour8qtlhnj987 +gxslxqkf4gmpfpqtvnfourf +3vjmbtpvdzvcpfour8bsppd6 +lfpzvmmnf8six8sixrvmhmg1dcqbc6 +7ppssvcpkpvvp +48twoxgndlgkfzqndkcdzcnr6hzb6pplx +sroneight9lxb6sixfivenmmcnh +tnpdqnqfgs7bhhpponesgmbvrmcsixglddfpbpxvp8 +twogsbzkvslnmfzbt3 +jjlqpfhthree524eight822 +six246fhhczntfvdcxjfqcxzmgdn +6threexgs7 +njxmonehnzjqfnsgbf3rmmldfive +one77eightxgdxghzrtgzddr +ninerxqzqzhjxf5 +4sevensix8onept89 +4onefnnrkljbm84rdeight +ln3253 +ninekvzvmhvmnj7fourchlfggglbcrjs +gdhrt7tjmgmqgcbblx98six +ninefour7onetwomcgjhgcgdl +fourtwo1fiverd +1three7twosix +sevenzgpmc2glhbfcczzg +3fivesevenfive +cshghdvkthree18 +19four5hsnsjkmrrsix +4xcqlfvnxninefourzzhfzkdfdg6mfmp +tqrjmt9zsctcbkpdlkqd2 +2zvpsevenlhzj86eight +xkfzftj5nfjlb7onenineone92 +9bqkbsjccmeightninefmnmfour6jstqgfcfdtqr +ninexlqcltkmdeight64one +7eightfour7two +three6tflgzsphcpbqgvmqnvn8 +threejdlgm8293three +pppm8dzvd8onefourtwo +ninetfkqhmckv581 +eight91twofourvzbpmf +1tgrgfourseven +phpfxdrlcjpshbrhrktwo2kzrcngmsmdfpvlmmbjzbrrxznkv +57one8two +fourglsthreenbzdfddhdh3sqkh +2glpbhskt8526s +455dxvmvjhh1skbrrf9ck +ninez6 +pdcsjdkc4nine +nineonesixsix26qsmkfctbhx +five9two +4ktptmhxfivefour5svlfvsgjsvgseven1 +eighteight8ninethreefourlqhln3 +seven3hffspxvklheightrx +eightjqjhzvzsixfour5llnhdvmf2 +5lptnqzmk99kdqqqjmthreeone +rv1 +5sixfive +cninethreeone1sevengpgqdnpk +4vphpshpsqngthree65fiveeight +3zkvgntwo3sixtwo +1gqxgxbdvmrgd64 +threemctclrrzvqzdnmkpgffive3snhxseven +dfngrsix5nninetwoneng +7ctbp7hhgtsevennine +9jrnsp3threehvnzn3 +48onepxlrpf +threegrhsffmlv5sevenseven +two7eightthreedmsfeightsslvfour +xfdljlbdjckkdzczr362 +four7mfppkmklgrmpmt91threenplqff4 +3cszpvddndjfmszrf +qoneightntdzfsix5lcz +fnthree1 +two4sixbmrndhsevensvxddjbdgmgdtlncpzph +9ptssvrgv +twov5 +4three2xqz3 +xxqrmhzdp2gnxscfourgkbkgntgr +2nzxdfxcvfive +sixninebtmtrvpmfnpdvceight3 +four8sixthreedsm9 +9blpvdpfqkghvh +3oneeighttwo2tflmpdjzq +fn3oneninesix3n +jgcd4qnbbxcvjqlthree49bfchjz1 +glj8sixdpbdpbqhh1rvgmbcqx +threeqfj66 +5qvhpfjkkbhjbkkzrlgfourlzvrvpn2nineq +3btvbbpvpl7ltf +bfxmkcn4sixfourglqjtmzlgj2eightfiveeight +twotqfpfive3eight +3threebzmcvtknthree8fiveone +gzkrdr1 +4cgvpfljq4szjk2bxlmn +tfdkhxtgj9 +one64llx9zjznbtxphn +7twoninenineseven19qjhhjg3 +cxflp2two2eight +vrhlzfsnfqzfqf3dcvzhbtpdkqdxn8nine +bsddhtzbpgn1llfcgm38 +one66twofddhjrkxjssixkeight +hmsevencnltvthree68twonezmc +3fsrrn +twofourseventxbcqzz8p +4121knflgt +tplkfivejlvtfm3tmcgsevenseven +vhhfhsfkqqeightone22four +98sevenfournine +nineone199 +2sixnbvpfrdvcctmdzxl +8gfbsrmhpnsclvrntwosevenseven2three +3dnhgfvhdffllnine +3frbnkjjbhrsixonesevenxph7 +five2gmxjthkksfiveonerj2nine +bjkvk6three5jtccbcvntwothree6 +4snlgnj6ctnzvqmphkzdcj335 +5bhhjhrnzftwonine4 +m8sixone7 +twomrhtklhdsdsglpncmffcqhthree4svxsln7 +sevenmzqn2hstdtfivehjhone +vqdhc8twocztspvsdpskgxtjhgk +4fourhthdppjz +446gfskjqrlvnqbm8xpnvq1 +jzcdttwo8xggone8fivezkzrjzn +gqfhjhkf7 +ds51sevengpjjnmxtdninetwo9 +twopbqhjnjpkl8mdrkleightrtlrhqn +3seven3fkb9qcrfkknht8sevensix +hvzrpbbbeight72jpvkhkjxgvxqjfqfour +eightthreeonev4vtpnbpfzch1one +sixdlds5twothree +eightjtrpdfxvdlkqmrrbxbc6 +5mtqkkxsqf78nineseven +dkkrkxxonevjqdthreen21ztnzlghmttxmblpp +ninethree43mrgng6jtjm +fiveg2three +6prj9four4rtm21 +one2vgvklpcqnxssjbone1six +8glktlgcfsevenmkjvone3dgjjfkd8 +threeone6ninefive7three +zfv2c2four5one6b +qxtbbtwo7jrdgxlcpxbczxhnpjthreetwogcfl +vfhgqjfqfc78eight +1x5 +six5four1four4 +2fiveshtds4oneightsjg +962seven58two7 +7mrtndknxzlzdkqcfjxgz9f66 +fqckxpqrjk8eighteighttwo6fivejps4 +drvglmnine7three8one7twodxtr +mbnfjkxptbtjmgcrtkhxjvjhjnine83mpnsixfcmxcbnspx \ No newline at end of file diff --git a/2024/1/1-1.py b/2024/1/1-1.py new file mode 100644 index 0000000..372f62f --- /dev/null +++ b/2024/1/1-1.py @@ -0,0 +1,4 @@ +with open('input.txt', 'r') as file: + raw_input = file.read() + +print(raw_input) \ No newline at end of file diff --git a/2024/1/1-1.sh b/2024/1/1-1.sh new file mode 100755 index 0000000..ef66a52 --- /dev/null +++ b/2024/1/1-1.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# Make temp files to store the sorted lists. +sorted_left_file=$(mktemp) +sorted_right_file=$(mktemp) + +# Use awk to cut out a column, then sort by general numeric value, and store in a temp file. +left=$(awk '{print $1}' input.txt | sort -g --field-separator=\n -o $sorted_left_file) +right=$(awk '{print $2}' input.txt | sort -g --field-separator=\n -o $sorted_right_file) + +# Print the filenames for debugging. +echo $sorted_left_file +echo $sorted_right_file + +# Initialize the cumulative sum of absolute differences. +running_total=0 + +# Read from the two sorted files, and save the cumulative sum of absolute differences +# between corresponding lines. +while read left_val right_val; do + difference=$((left_val - right_val)) + if [ $difference -lt 0 ]; then + abs_value=$((difference * -1)) + else + abs_value=$difference + fi + running_total=$((running_total + abs_value)) + +done <<< $(paste $sorted_left_file $sorted_right_file) + +echo $running_total diff --git a/2024/1/1-2.sh b/2024/1/1-2.sh new file mode 100644 index 0000000..212c7d5 --- /dev/null +++ b/2024/1/1-2.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Create a temp file to save the right column in so it can be easily searched with grep. +right_file=$(mktemp) + +# Use awk to separate the columns. +left=$(awk '{print $1}' input.txt) +awk '{print $2}' input.txt > $right_file + +# Initialize the similarity score. +similarity_score=0 + +for entry in $left; do + + # Count the number of times each ID from the left column occurs in the right column. + count=$(cat $right_file | grep $entry | wc -l) + + # Multiply the count by the ID value, and add that the the cumulative sum. + similarity_score=$((count * entry + similarity_score)) +done + +echo $similarity_score + + +# for l in $left; do +# echo $l +# done \ No newline at end of file diff --git a/2024/1/input.txt b/2024/1/input.txt new file mode 100644 index 0000000..7e73392 --- /dev/null +++ b/2024/1/input.txt @@ -0,0 +1,1000 @@ +12823 12823 +74540 88907 +37687 50218 +83750 57255 +43380 59171 +25542 37895 +82191 69869 +93287 63605 +20054 26570 +21769 12823 +77367 67099 +16570 82288 +26289 87436 +80405 62160 +38985 84570 +33507 70651 +78135 12823 +29782 72675 +52972 60020 +37251 13360 +86302 11091 +55698 99302 +11884 23170 +14203 42793 +86556 92216 +92768 98887 +23528 57963 +76772 28514 +96066 46571 +29967 49394 +45832 53891 +71411 57963 +82438 48120 +40512 35506 +19236 46571 +48739 79955 +40697 15914 +32715 27573 +23920 36285 +86163 69869 +71324 39817 +94448 27540 +70651 73871 +60362 15914 +63567 12823 +43893 46571 +92105 21816 +98994 67099 +53618 84742 +24942 39565 +29346 67184 +32212 19642 +54509 82050 +23312 64628 +63771 21691 +38440 26724 +21816 95925 +71068 65860 +14609 55618 +72011 48120 +76020 84229 +48211 33989 +96092 33989 +36555 23920 +22030 48211 +36465 99481 +88296 67099 +36187 77758 +83500 67485 +65799 74354 +46450 23920 +86793 29963 +50695 44098 +65118 14670 +32787 44098 +21102 97142 +92131 29662 +43798 67099 +93295 66944 +56130 15566 +24670 87249 +90131 74584 +41483 16531 +23843 73292 +74526 29963 +55839 14212 +94207 49334 +61338 73170 +31666 39565 +66759 97543 +29722 74520 +22134 35306 +19270 23920 +27053 44098 +45607 42425 +86346 89135 +34136 69485 +39445 70651 +68166 98707 +56499 36545 +12580 48211 +64981 44098 +90943 39974 +80049 39565 +77875 48990 +54424 57426 +81207 68150 +34414 98023 +79187 52901 +79346 23869 +21513 46571 +15053 40401 +71310 38780 +93889 68025 +12261 69729 +57278 25004 +72612 92105 +34775 29963 +38466 70408 +66141 71462 +33759 28157 +23508 80622 +22658 68025 +46137 51837 +74240 68025 +46323 88730 +29267 44098 +61682 13360 +16246 33989 +64833 21816 +73449 92615 +62582 20616 +29963 15914 +37974 60020 +17782 45096 +82282 23920 +15291 60020 +83471 92371 +51148 75901 +28497 23861 +93661 22470 +52360 44098 +19563 39565 +49131 59613 +82638 21691 +71749 21634 +73375 39565 +22422 98262 +96517 42860 +16499 70651 +99194 74365 +81566 21816 +91031 69001 +39388 67099 +13545 23920 +11979 51219 +61595 13636 +34228 61662 +55043 69869 +95357 70397 +37082 57426 +37273 44706 +42656 51161 +92506 98779 +41866 89323 +35492 10452 +42148 57426 +59819 34819 +78615 13427 +48003 85632 +48120 46571 +23470 48211 +92290 97410 +78534 29963 +72064 39565 +69219 57426 +92793 69278 +57426 43882 +39836 79670 +39861 33989 +32392 49744 +55837 87513 +87360 76393 +62336 20641 +10582 85481 +72887 51687 +57048 29021 +63586 29963 +34767 41921 +66407 21691 +45550 62286 +17625 48345 +10410 33482 +64946 61098 +87598 64264 +16102 60485 +14876 37318 +23095 24531 +86353 85448 +73654 15914 +22354 23329 +41772 62251 +69998 79585 +44106 15400 +28581 31886 +34682 11345 +43448 50338 +26948 29963 +82482 68276 +54701 12823 +18922 51687 +64395 29985 +43509 99202 +19177 74365 +71169 39565 +50214 46571 +32348 14042 +71943 23920 +47564 48211 +84539 53239 +28303 40447 +80955 10137 +82358 71499 +17552 12823 +60419 86898 +56250 77850 +71200 67409 +43301 15914 +23512 49536 +13712 84205 +98354 98887 +63702 22888 +75354 46571 +24304 68025 +99181 20195 +41856 23920 +48236 23920 +30623 69869 +24467 48962 +40537 48211 +91888 61088 +70968 23920 +23744 46571 +56536 13360 +94739 23339 +65273 32896 +49147 23040 +55705 98887 +15517 26570 +82815 99647 +63974 33989 +98269 72091 +65774 62028 +86130 88830 +47706 52189 +88818 96935 +99823 12836 +58198 44429 +71859 74365 +18878 21691 +29955 91508 +72262 44098 +79061 90293 +71591 46571 +69367 57426 +26570 30757 +78497 83175 +61128 46571 +66101 99459 +10443 59613 +29154 39565 +68366 46799 +94940 78937 +21614 91666 +47019 34953 +29836 51687 +97089 14752 +31180 77674 +18692 33989 +34377 15914 +16206 67099 +19568 46858 +82230 98833 +36957 15914 +11625 21816 +89751 14670 +88264 44098 +73202 21816 +21389 91653 +94699 63019 +30321 29963 +22159 28581 +76341 85552 +20287 48211 +75921 83341 +88878 60020 +78703 92672 +34581 68025 +31498 67099 +37178 46571 +50526 34670 +15667 12823 +48472 61917 +68025 19843 +18152 84990 +92997 57426 +45194 17337 +35792 90923 +43913 58323 +72309 68025 +77240 87169 +89083 59613 +82310 62531 +12555 10424 +98925 10257 +74420 52083 +24589 85673 +34708 61492 +85722 38721 +62893 51687 +21691 74365 +73322 12823 +11492 54857 +12490 18361 +13166 48211 +88705 39565 +67301 82886 +72198 67099 +24874 28002 +76487 67099 +62948 31200 +59865 63220 +53676 26314 +92741 67099 +20860 13360 +88028 59613 +45201 85967 +23667 32896 +10581 26570 +77520 34819 +84566 59613 +51687 29963 +19781 68938 +97491 97700 +47531 14042 +68156 96185 +73324 49536 +78968 79510 +21596 33989 +15448 80613 +31170 56186 +87856 44899 +16001 92938 +30641 13360 +20379 94681 +34736 81157 +53290 15914 +72642 16629 +59344 51437 +68199 93242 +52460 90743 +55008 36367 +17539 68234 +46571 20804 +23893 13360 +10902 14670 +71961 61714 +47252 90538 +34801 85443 +54575 44098 +88121 10292 +78637 91423 +39213 67915 +98141 78421 +57963 14042 +98480 23920 +71147 57422 +43578 51687 +31681 50491 +33700 17355 +66228 41600 +78032 74365 +88321 21816 +42531 48660 +26035 94016 +60429 15939 +91612 17451 +58120 23920 +89407 75901 +51440 74365 +74970 28186 +27277 57157 +27465 34087 +46755 14042 +61113 99926 +48174 29963 +92842 92627 +37889 35772 +46193 31448 +17838 13360 +41317 92105 +91203 74595 +56700 21841 +92225 23685 +14042 29963 +28888 43645 +42409 29963 +43742 28322 +47950 56420 +60012 32357 +22784 59353 +56646 70651 +71287 33989 +67068 81828 +56344 60024 +84576 33771 +55332 86106 +39659 17918 +15449 94351 +18435 45157 +29432 53238 +15665 23920 +32310 57963 +12187 13426 +91607 19931 +56064 23200 +19785 88382 +59910 80963 +66450 98887 +82386 16004 +18764 94352 +65692 77191 +84784 20164 +62951 74365 +99050 48120 +45731 39696 +48470 21816 +39324 53921 +94800 46976 +68808 97405 +82573 14670 +47088 21691 +13951 68025 +27500 39776 +84585 38027 +69048 13360 +27780 90293 +80590 11936 +55370 75925 +23451 97204 +27191 92346 +26100 14670 +90293 12505 +50078 88870 +19137 39565 +27737 90293 +22569 29963 +48902 69869 +36815 74365 +24284 21816 +98928 87900 +70871 17597 +35712 60185 +89228 48211 +94986 39565 +76950 54205 +40752 57426 +85746 39829 +47474 57121 +83603 69971 +49261 69869 +44969 13360 +16958 74365 +59433 57963 +71578 18842 +94375 62791 +99614 13360 +89622 69869 +51129 56771 +11156 51276 +78767 33989 +63554 40385 +45860 34819 +15810 47662 +74771 47240 +35428 80330 +30052 81082 +18150 41916 +68986 93799 +34820 88196 +50201 56619 +22996 59613 +56297 67099 +99260 58078 +64688 21816 +55665 28824 +97956 37259 +47097 21691 +58688 33107 +79583 48120 +55063 45256 +31835 32896 +15371 14670 +27844 46413 +18991 40292 +44786 32306 +52280 81741 +65427 46740 +33385 43108 +50750 57509 +74193 75901 +37598 59014 +57331 39565 +27243 26144 +51656 23277 +42413 70530 +96608 18903 +36579 24670 +63733 21090 +84536 20737 +79453 35604 +30983 29016 +94593 15346 +79422 50694 +82346 70651 +53011 70651 +65714 47190 +60573 46571 +51630 13153 +38941 69869 +89753 12823 +42939 13360 +60575 88841 +82800 48120 +57035 41389 +87371 87900 +64061 65441 +69851 84299 +98809 65624 +59834 27020 +18835 51900 +33278 14048 +36041 34994 +89750 90878 +33377 57426 +71745 79525 +37615 56520 +22986 15914 +78993 32234 +98887 53280 +91495 57476 +55009 83614 +65088 13360 +61107 55377 +86850 69869 +24409 39565 +41647 20300 +30341 98013 +13360 83709 +94119 39786 +60874 69563 +94681 90293 +12294 93733 +31270 44098 +67169 48120 +69982 25424 +82546 46331 +45548 75901 +68981 59613 +56539 19459 +46787 76063 +41640 70651 +17244 69785 +76548 67707 +80347 75901 +84619 62909 +65047 21816 +32440 21816 +19858 47222 +93947 46571 +34433 25060 +59800 87922 +87150 11813 +61593 12823 +45059 45597 +50520 48120 +43404 70651 +89153 14042 +75276 63196 +73975 59613 +34721 85100 +27022 29317 +95168 46178 +10562 48211 +87285 21048 +85124 73523 +47645 74365 +40814 29963 +17256 28745 +36758 39144 +81972 51687 +42533 71291 +80579 67961 +62777 44098 +33567 73871 +55729 33616 +46613 83768 +73688 15914 +89566 48120 +77156 38783 +28195 76020 +55581 57426 +89915 73871 +20696 78053 +65015 56772 +72302 14042 +91965 94445 +23577 21814 +22461 47256 +90346 58704 +64595 45253 +56289 56251 +31184 28040 +47349 82756 +54200 15914 +12174 67099 +73040 15914 +62683 39298 +97890 93681 +21601 74323 +50505 86613 +54550 67099 +66662 44098 +40887 69869 +41179 21691 +73871 69869 +99728 97754 +86319 65104 +28466 28968 +30688 39565 +14670 83817 +30371 10006 +48181 15914 +76745 57426 +49779 96138 +89394 39565 +75451 39454 +55547 26570 +44988 57122 +84043 33579 +93713 50715 +31694 59613 +72390 50633 +71964 73871 +22241 33767 +18282 69869 +17656 76562 +38157 50300 +81358 39565 +34819 50804 +45875 78072 +94156 40549 +14920 27935 +82795 73906 +80301 92362 +30755 26231 +28592 74531 +91455 48120 +31513 49437 +44618 74365 +48624 33714 +85008 23920 +69604 23920 +10980 22705 +74651 43754 +93201 48180 +54330 68025 +33989 31277 +72222 46571 +76785 86114 +69869 13360 +31444 70651 +58717 49312 +64974 46571 +18089 93072 +22555 58689 +38811 50986 +49910 28581 +57919 96399 +18217 65989 +78980 25085 +27451 99626 +78501 41132 +19069 56502 +75640 14042 +87479 84318 +41487 13360 +70904 41282 +21143 67099 +86138 66970 +87503 50453 +22997 30279 +71054 30416 +55242 63291 +24796 26570 +30921 12193 +73901 71881 +78719 70651 +73668 21644 +40062 50325 +35543 23920 +55260 44098 +13994 62561 +86199 55342 +19950 24292 +84417 41010 +84692 23359 +72516 17950 +73062 33989 +42339 93099 +11175 12823 +72962 15914 +87900 47702 +86061 21816 +87216 19093 +23397 59613 +30171 23605 +68984 57537 +40889 25577 +72952 70651 +14335 45810 +45886 90293 +93935 90169 +26858 57426 +58806 57426 +88530 90854 +51385 70651 +82517 48120 +17888 13360 +33574 89201 +38099 13453 +35615 76655 +40717 21691 +92891 21816 +10071 55881 +24679 60020 +64001 64186 +50189 70651 +75901 28208 +19520 10579 +57337 81798 +15914 14670 +55533 24670 +74365 29963 +96604 14822 +95480 47666 +45043 21816 +64043 59798 +36479 44719 +39565 45563 +30729 21816 +19592 51687 +26575 57426 +96389 30827 +70446 86987 +18115 46908 +36896 46571 +46417 48146 +28955 66308 +95051 96077 +93673 70651 +78658 67099 +75363 86412 +59940 22584 +40027 40113 +38318 48120 +50269 57426 +25217 20768 +69573 99624 +53784 24670 +17175 53310 +70773 43530 +89981 21816 +17683 80473 +10680 43906 +88622 95505 +56828 34115 +71454 92105 +59613 76020 +93410 39537 +30592 57426 +15125 28581 +85953 67099 +79266 12823 +49278 28786 +12848 74190 +63339 48120 +50598 34834 +16139 39353 +77235 74365 +78026 44098 +47079 70651 +56200 98726 +47450 70651 +25045 24670 +91763 68025 +67107 91601 +49768 67099 +10521 88700 +16496 21816 +51163 37436 +57687 67871 +95222 46855 +43170 46745 +97168 79787 +71573 70165 +56432 15604 +25242 14670 +46595 96449 +32896 12823 +48197 29963 +75971 24670 +28619 42517 +94122 81320 +87681 92105 +60991 56609 +71377 50018 +61971 56175 +57550 16562 +57301 90293 +27464 39627 +83664 69869 +71107 26421 +61718 59613 +87707 98887 +11237 24670 +26115 77368 +20429 48211 +56169 85808 +69274 32416 +70566 39565 +47104 64253 +17710 68025 +92830 76162 +56054 73660 +16340 70651 +10392 34986 +62500 19456 +99320 19994 +56618 29963 +42612 22192 +37193 50294 +67800 77943 +57447 34819 +42054 57426 +81285 20316 +56698 14042 +60682 25485 +94833 33989 +11001 56123 +13344 38104 +26492 37666 +77913 34819 +27127 67099 +89373 14670 +84245 23275 +93176 57426 +75068 44098 +64691 37231 +74682 96693 +50985 14670 +22840 28581 +65569 39692 +49536 25963 +47009 87650 +56625 76613 +49670 59613 +98701 28404 +90721 74642 +90568 90293 +34398 38135 +40654 58061 +55254 57426 +30820 69869 +42973 53638 +79937 98595 +19796 46811 +39676 48211 +51100 68621 +49955 13124 +26946 13360 +58367 29193 +94451 48120 +86596 16163 +15417 98887 +49413 74365 +67099 13360 +68239 98887 +71586 65467 +86204 68483 +64235 94569 +63186 87472 +17587 97916 +99477 44436 +92932 87900 +79794 55739 +45968 74365 +97597 58915 +18098 97117 +22937 38639 +62634 90293 +60948 14042 +42836 64451 +22355 12823 +91739 21816 +64123 14670 +64181 60020 +33245 47506 +77922 74118 +84133 75901 +48885 53070 +70613 92283 +83117 12823 +58707 75350 +12185 92946 +60020 28566 +14029 41875 +18414 49550 +60903 26570 +87438 39565 +65638 57325 +88259 12823 +99038 86394 +68699 10243 +21850 42389 +62281 21542 +87797 12690 +63846 15367 +64314 15223 +52539 89174 +83073 48187 +26743 35622 +52779 19988 +32981 55779 +51090 34819 +39533 35299 +44432 57426 +31692 44098 +25549 51846 +92429 67099 +99835 18335 +44128 32196 +88115 21691 +39366 18923 +61773 74286 +45953 60436 +43635 88029 +18349 13511 +72541 92837 +97794 69329 +64562 29954 +44098 13984 +93431 81159 +74605 15914 +79186 96684 +47291 23920 +37794 36179 +33349 98887 +79910 57426 +67576 34819 +11875 37633 +94186 46273 +32249 59613 +31261 70651 +29272 46571 +86184 74545 +73999 30507 +72117 46571 +62639 60020 +83988 72916 +56794 73328 +15112 39680 +71467 61678 +44399 71302 +45068 21816 +51866 46571 +53229 47539 +78623 57963 +40054 14670 +41884 91788 +35923 57772 +22363 74365 +71817 46571 +40307 92314 +38911 13095 +72191 21857 +91448 59613 +60833 44098 +48061 21816 +31899 33989 diff --git a/2024/2/2-1.sh b/2024/2/2-1.sh new file mode 100644 index 0000000..5898580 --- /dev/null +++ b/2024/2/2-1.sh @@ -0,0 +1,106 @@ +is_increasing () { + # Tests if the arguments are monotonally increasing. Returns 1 if + # monotone increasing; 0 if not. + local output=1 + local difference=0 + local prev="" + + for entry in $@; do + + # Skip the first value since there is nothing to compare against. + if [ -z $prev ]; then + prev=$entry; + continue; + fi + + # If an entry is less than or equal to the previous entry, the arguments + # are not monotonally increasing. + if [ $entry -le $prev ]; then + output=0 + break + fi + + prev=$entry + + done + + echo $output + +} + +is_monotone () { + # Uses is_increasing to check if the arguments are monotonally + # increasing OR decreasing. Returns 1 if the args are monotone, + # 0 if not. + + # Look at the first two entries to see if we should test for + # increasing or decreasing. + if [ $2 -gt $1 ]; then + echo $(is_increasing $@) + elif [ $1 -gt $2 ]; then + + # To test for decreasing, simply check if they increase backwards. + # Replace spaces with line breaks, cat the column in reverse order, + # then use xargs to parse back into a list of args. + echo $(is_increasing $(echo $@ | tr ' ' '\n' | tac | xargs)) + else + + # If the first two entries are equal, then the arguments are not monotone. + echo 0 + fi +} + +is_gradual () { + # Checks to see if a series of arguments change gradually. If the + # absolute differences between each entry are 3 or smaller, return 1. + # Otherwise, returns 0 + + local output=1 + local prev="" + + for entry in $@; do + + # Skip the first value since there is nothing to compare against. + if [ -z $prev ]; then + prev=$entry; + continue; + fi + + difference=$((entry - prev)) + + if [ $difference -ge 4 ] || [ $difference -le -4 ]; then + output=0 + break + fi + + prev=$entry + + done + + echo $output + +} + +is_gradual_monotone () { + # Echoes 1 if the arguments are a gradual monotone series; 0 if not. + + if [ $(is_monotone $@) -eq 1 ] && [ $(is_gradual $@) -eq 1 ]; then + echo 1 + else + echo 0 + fi + +} + +main_2_1 () { + num_gradual_monotone=0 + + while read line; do + line_is_gradual_monotone=$(is_gradual_monotone $line) + num_gradual_monotone=$((num_gradual_monotone + line_is_gradual_monotone)) + done <<< $(cat input.txt) + + echo $num_gradual_monotone +} + +# main_2_1 \ No newline at end of file diff --git a/2024/2/2-2.sh b/2024/2/2-2.sh new file mode 100644 index 0000000..301a1ab --- /dev/null +++ b/2024/2/2-2.sh @@ -0,0 +1,35 @@ +source 2-1.sh + +tolerant_is_gradual_monotone () { + # Echoes 1 if the arguments are gradual monotone or if removing + # a single argument will make the rest gradual monotone. 0 otherwise. + + local output=0 + if [ $(is_gradual_monotone $@) -eq 1 ]; then + output=1 + else + local i=1 + while [ $i -le $# ]; do + subarray=$( echo $@ | cut -d ' ' -f $i --complement ) + if [ $(is_gradual_monotone $subarray) -eq 1 ]; then + output=1 + break + fi + i=$((i + 1)) + done + fi + echo $output +} + +main_2_2 () { + num_gradual_monotone=0 + + while read line; do + line_is_gradual_monotone=$(tolerant_is_gradual_monotone $line) + num_gradual_monotone=$((num_gradual_monotone + line_is_gradual_monotone)) + done <<< $(cat input.txt) + + echo $num_gradual_monotone +} + +# main_2_2 \ No newline at end of file diff --git a/2024/2/input.txt b/2024/2/input.txt new file mode 100644 index 0000000..118d727 --- /dev/null +++ b/2024/2/input.txt @@ -0,0 +1,1000 @@ +5 6 7 10 13 16 13 +19 21 24 27 28 28 +16 18 20 21 23 25 29 +44 46 48 49 52 55 56 62 +51 52 53 50 52 +10 11 12 14 11 10 +80 83 85 86 88 85 85 +89 90 88 90 94 +85 86 83 85 92 +31 32 32 33 36 +17 18 18 19 16 +33 34 34 37 39 40 43 43 +86 87 89 90 92 92 96 +7 9 11 13 16 16 23 +59 60 64 67 69 +43 45 49 51 48 +11 13 14 17 21 22 24 24 +74 75 78 82 83 86 88 92 +7 8 9 12 16 18 23 +35 36 39 45 48 49 +10 12 14 15 22 24 21 +4 6 11 12 12 +84 86 88 93 97 +5 7 8 15 16 23 +67 66 68 70 71 74 76 +17 16 19 20 22 25 22 +41 40 42 45 46 47 47 +59 56 58 61 63 67 +26 25 26 29 31 32 38 +81 78 76 79 82 85 86 88 +54 52 49 52 54 55 53 +24 23 25 23 25 25 +29 28 27 30 31 34 38 +65 64 66 64 69 +88 86 86 87 90 93 96 +98 97 97 99 97 +68 67 68 71 71 72 72 +45 42 45 46 49 49 53 +91 89 89 91 92 99 +63 62 65 67 68 72 75 +79 76 79 80 82 85 89 87 +37 35 38 42 42 +90 87 88 92 93 97 +80 77 80 82 85 89 94 +9 6 12 13 15 +88 87 89 96 99 97 +39 37 39 45 46 49 52 52 +6 4 5 6 12 13 16 20 +2 1 4 9 12 14 21 +80 80 81 84 86 +82 82 84 86 85 +49 49 51 52 53 54 54 +79 79 80 83 85 86 88 92 +56 56 59 62 64 65 72 +56 56 59 61 63 66 64 67 +59 59 58 60 57 +66 66 67 68 67 67 +25 25 22 25 29 +4 4 6 5 12 +89 89 89 91 93 +6 6 9 11 11 13 16 15 +33 33 36 38 39 39 40 40 +60 60 63 63 66 67 68 72 +62 62 64 67 67 74 +30 30 33 37 40 42 44 +16 16 20 23 26 27 24 +79 79 83 84 85 86 86 +28 28 32 34 37 39 43 +39 39 40 43 46 50 56 +3 3 5 11 14 17 20 +54 54 55 56 57 64 62 +37 37 42 45 47 47 +44 44 50 53 56 59 60 64 +32 32 37 40 45 +20 24 27 28 30 33 35 +15 19 22 25 27 25 +84 88 91 92 93 95 97 97 +80 84 86 88 89 93 +79 83 86 87 88 90 97 +39 43 40 43 44 46 +70 74 73 76 73 +10 14 15 18 16 17 17 +44 48 47 49 51 53 57 +9 13 14 17 18 20 19 26 +60 64 67 70 73 76 76 78 +62 66 69 69 70 69 +17 21 24 24 27 27 +8 12 12 14 17 21 +30 34 35 35 38 40 41 48 +12 16 20 23 26 +67 71 73 75 79 77 +37 41 44 48 49 49 +24 28 29 32 36 40 +63 67 71 74 76 83 +58 62 68 70 73 74 75 +75 79 81 83 90 89 +5 9 14 15 15 +10 14 15 21 23 25 27 31 +3 7 12 15 20 +9 14 17 18 19 21 22 23 +1 6 9 12 15 16 15 +86 91 92 94 94 +64 70 71 74 77 79 83 +42 47 49 52 54 61 +66 72 74 73 74 75 78 79 +41 47 49 48 47 +47 53 52 54 54 +55 61 62 59 62 63 65 69 +60 67 70 67 69 72 77 +59 65 67 67 70 73 75 +41 48 50 50 51 50 +34 41 41 43 44 44 +54 60 62 63 64 65 65 69 +79 84 87 87 89 92 93 99 +11 16 20 21 24 +48 53 55 56 60 63 66 64 +75 81 83 87 87 +24 30 33 37 41 +18 23 26 29 33 34 41 +10 17 20 22 29 31 33 +74 80 83 86 91 89 +48 53 59 61 62 62 +25 30 32 37 39 42 46 +59 66 72 73 78 +34 32 29 27 24 22 20 23 +99 97 95 92 90 89 86 86 +23 22 21 20 17 16 13 9 +77 74 73 71 68 65 64 59 +31 29 27 24 25 23 +91 90 88 85 84 81 84 87 +32 31 30 27 25 27 27 +52 50 48 46 49 48 47 43 +16 15 12 10 8 7 8 1 +12 11 8 8 5 2 1 +15 13 12 9 9 10 +74 71 70 70 67 64 64 +68 67 66 65 63 63 61 57 +45 42 41 41 34 +40 38 34 33 31 28 +45 42 38 36 34 37 +93 92 90 89 88 84 83 83 +31 30 26 23 19 +33 32 30 28 26 25 21 14 +68 67 60 57 55 54 53 51 +32 31 28 25 19 21 +83 80 74 72 69 68 68 +44 41 38 37 34 29 28 24 +59 56 54 47 45 44 37 +40 41 38 37 35 33 32 +52 53 51 48 47 46 47 +32 35 34 32 30 30 +58 59 57 54 51 49 46 42 +48 51 48 45 44 38 +32 35 38 37 34 33 +86 89 91 88 85 83 86 +61 63 61 60 58 59 57 57 +97 98 97 95 92 89 92 88 +36 38 41 39 38 33 +87 89 89 88 86 +92 95 95 92 89 88 91 +70 73 71 71 71 +69 70 70 68 67 65 61 +61 62 62 59 56 54 47 +64 66 64 61 57 54 +23 24 21 17 15 12 11 14 +14 17 16 12 10 8 8 +80 81 77 74 72 70 66 +30 31 29 27 23 20 17 11 +28 31 26 23 21 18 +20 21 16 15 12 11 13 +41 44 38 36 36 +59 60 59 53 49 +28 31 30 28 23 22 17 +42 42 41 39 37 35 34 31 +47 47 44 41 43 +89 89 88 85 84 82 80 80 +59 59 56 55 52 49 48 44 +55 55 54 51 50 43 +24 24 21 24 21 19 16 13 +92 92 90 89 87 84 85 86 +98 98 97 98 97 97 +58 58 56 55 58 57 56 52 +44 44 43 41 43 41 34 +57 57 57 55 54 52 49 +87 87 87 86 87 +89 89 86 86 85 85 +18 18 15 15 14 13 9 +34 34 34 31 29 27 26 20 +71 71 70 66 65 +64 64 62 61 57 56 58 +18 18 14 11 9 6 6 +83 83 81 78 76 72 68 +72 72 68 67 66 65 60 +85 85 84 83 77 75 74 71 +53 53 51 44 46 +8 8 6 1 1 +17 17 11 9 5 +68 68 67 64 61 55 54 48 +20 16 13 12 9 8 +99 95 92 89 88 90 +33 29 26 23 20 20 +70 66 63 60 56 +37 33 31 29 28 23 +27 23 21 22 19 +81 77 76 73 71 69 70 72 +30 26 29 28 27 24 23 23 +21 17 19 18 15 13 9 +91 87 85 82 80 82 80 73 +83 79 79 77 75 74 +86 82 81 81 78 79 +85 81 78 76 76 76 +77 73 73 71 69 66 62 +68 64 62 62 55 +26 22 19 15 13 +10 6 2 1 4 +56 52 51 48 45 41 38 38 +21 17 14 11 7 3 +61 57 53 52 50 43 +23 19 17 10 8 6 +81 77 76 74 68 66 68 +87 83 78 75 75 +42 38 37 35 29 26 25 21 +62 58 55 54 47 40 +70 65 63 62 61 58 56 53 +88 82 81 78 76 75 74 76 +29 24 23 21 20 19 18 18 +26 20 18 16 14 11 10 6 +68 61 59 58 57 55 52 46 +25 19 16 19 18 15 +51 45 43 46 47 +24 18 21 20 19 18 18 +30 23 21 24 20 +72 65 63 65 64 58 +81 74 71 68 68 66 63 +46 41 40 40 37 34 33 36 +51 45 45 42 40 39 39 +47 41 39 39 35 +32 25 24 24 19 +89 82 80 78 74 71 +70 64 61 59 58 54 55 +66 61 59 55 55 +60 54 53 49 46 43 39 +70 63 61 59 55 52 45 +37 30 23 22 20 19 16 13 +70 64 57 55 56 +72 67 64 61 59 57 52 52 +67 62 57 54 53 50 46 +40 34 31 28 21 20 17 11 +52 55 57 60 63 66 63 +10 11 12 13 14 16 16 +84 87 88 90 91 95 +12 14 17 19 20 21 26 +46 49 48 51 54 +16 18 21 20 19 +66 68 71 69 71 72 72 +9 12 14 11 14 18 +79 80 82 80 83 90 +13 14 17 17 20 +4 5 6 6 7 10 9 +76 77 79 79 79 +70 73 73 75 76 78 79 83 +29 31 34 34 37 38 45 +69 71 74 78 80 81 +7 8 11 15 17 14 +43 44 48 49 50 50 +1 3 7 8 12 +40 42 46 47 52 +65 66 67 73 74 +11 14 16 17 23 22 +4 6 7 9 15 16 16 +68 69 70 73 75 81 85 +46 48 55 56 58 64 +34 33 34 35 38 41 42 45 +76 75 78 79 81 84 83 +78 76 78 80 82 85 88 88 +9 6 7 10 14 +4 1 2 3 4 5 8 13 +22 20 23 25 23 25 27 29 +51 50 53 50 52 54 57 55 +79 77 76 77 77 +30 28 31 33 36 35 39 +76 75 76 79 81 80 81 88 +6 3 4 6 9 9 12 14 +31 30 32 32 33 30 +91 89 92 92 94 94 +79 78 81 84 86 86 90 +4 2 5 5 7 9 11 17 +15 13 15 17 21 22 +33 30 31 34 38 35 +49 46 50 51 54 55 55 +65 63 67 70 72 76 +11 9 10 11 15 18 21 28 +6 4 6 8 15 18 +74 71 73 78 81 83 84 82 +62 60 67 68 69 69 +71 70 73 75 76 79 85 89 +11 9 12 14 19 22 24 29 +31 31 33 36 38 40 42 45 +8 8 9 12 14 16 17 15 +57 57 59 61 62 64 64 +29 29 32 35 37 39 42 46 +56 56 57 60 61 62 69 +66 66 67 66 69 +31 31 28 30 28 +20 20 19 20 22 25 25 +2 2 3 5 8 7 11 +5 5 6 9 12 11 14 21 +15 15 16 18 20 22 22 23 +90 90 90 92 95 97 96 +54 54 56 56 59 59 +67 67 68 69 69 70 74 +44 44 44 46 51 +7 7 9 12 16 19 +46 46 47 51 52 51 +22 22 26 27 29 30 30 +76 76 78 79 82 84 88 92 +16 16 17 19 23 25 30 +28 28 31 36 39 42 +13 13 14 20 18 +41 41 46 47 50 50 +79 79 84 87 91 +79 79 80 87 89 90 93 99 +6 10 11 13 16 +80 84 86 89 91 93 91 +24 28 30 31 34 37 37 +49 53 55 57 61 +44 48 51 53 59 +17 21 24 25 26 25 28 +73 77 79 77 79 77 +76 80 79 80 82 84 84 +75 79 80 81 83 82 86 +26 30 33 36 37 35 41 +52 56 59 59 61 62 65 67 +9 13 16 18 18 21 19 +78 82 82 85 87 87 +22 26 28 31 31 35 +48 52 52 55 60 +43 47 48 52 54 56 +24 28 30 32 36 39 38 +46 50 54 56 57 58 61 61 +13 17 20 24 28 +8 12 14 17 19 23 30 +7 11 12 14 21 24 26 28 +25 29 35 37 38 41 39 +34 38 44 46 48 48 +40 44 45 52 53 57 +74 78 79 80 86 93 +72 77 79 80 81 83 +77 83 86 88 90 92 91 +65 70 73 76 79 82 83 83 +31 36 39 42 43 47 +41 47 48 49 50 51 52 59 +35 40 37 38 41 +73 80 79 80 81 80 +77 83 84 87 86 89 92 92 +29 34 36 39 40 39 43 +2 7 9 10 9 14 +81 87 89 89 90 93 +68 75 77 80 80 83 84 83 +76 83 86 86 87 89 89 +56 61 64 67 67 69 71 75 +54 60 61 64 64 71 +50 55 59 62 65 +43 48 51 55 57 56 +51 56 57 60 63 67 69 69 +54 60 63 64 68 71 75 +52 59 63 64 69 +67 72 75 81 84 +6 12 17 20 23 24 25 22 +6 13 14 16 17 24 24 +40 46 49 50 57 60 61 65 +6 11 18 21 23 28 +16 13 12 9 8 11 +68 67 66 65 62 62 +46 45 44 42 40 36 +49 48 47 46 43 42 41 34 +93 92 91 88 90 88 +87 86 87 84 83 85 +35 34 31 28 31 31 +15 13 15 13 9 +63 61 58 56 57 54 49 +21 20 20 19 16 14 13 +54 53 52 52 49 51 +17 15 14 11 11 11 +89 86 83 83 82 81 77 +99 98 97 94 94 88 +38 37 34 30 28 +19 17 16 14 10 13 +46 43 39 37 34 33 30 30 +17 14 13 9 6 5 1 +20 18 14 11 5 +91 90 89 88 87 80 79 78 +62 60 57 56 54 48 47 49 +94 92 90 85 85 +50 49 44 42 38 +49 46 39 37 36 34 32 26 +63 66 63 60 57 55 +58 60 58 56 57 +49 51 50 49 47 47 +50 52 51 50 48 47 43 +9 11 10 8 1 +48 49 52 49 46 44 +46 47 46 43 40 43 40 42 +87 90 89 92 90 90 +98 99 97 96 95 97 96 92 +76 77 79 77 71 +28 29 29 27 25 23 22 +95 98 98 95 92 90 87 89 +64 67 64 62 59 58 58 58 +92 95 92 90 87 87 83 +51 53 52 50 50 44 +81 82 78 77 75 72 69 68 +53 56 55 51 49 51 +26 29 25 24 21 21 +40 41 39 35 32 29 26 22 +22 25 21 19 17 11 +65 68 62 60 57 +75 77 76 70 68 66 64 65 +50 52 46 43 43 +53 55 53 46 43 40 36 +63 64 63 57 56 53 48 +42 42 41 39 36 35 34 31 +70 70 69 66 65 68 +82 82 79 78 78 +47 47 46 44 40 +55 55 53 50 44 +62 62 59 58 61 59 58 +88 88 87 85 87 88 +68 68 66 68 68 +32 32 29 28 29 27 25 21 +24 24 26 24 18 +95 95 93 92 92 89 +72 72 69 69 68 67 64 67 +27 27 24 22 19 19 19 +26 26 23 20 20 19 17 13 +9 9 8 8 6 1 +58 58 57 54 53 51 47 45 +95 95 91 90 92 +13 13 10 6 6 +87 87 85 84 80 76 +81 81 77 74 73 71 66 +94 94 92 91 85 83 82 +33 33 32 30 29 23 20 22 +92 92 91 84 83 83 +16 16 10 8 7 5 1 +60 60 58 55 50 48 43 +43 39 37 36 34 33 32 29 +88 84 81 80 78 75 74 76 +37 33 30 29 26 25 23 23 +76 72 69 68 67 63 +95 91 90 87 82 +85 81 78 81 80 77 +35 31 28 26 27 29 +80 76 78 77 75 75 +35 31 29 31 29 25 +96 92 89 91 90 87 81 +51 47 45 44 44 41 +91 87 86 83 80 79 79 82 +50 46 46 45 44 42 42 +60 56 54 54 50 +86 82 79 79 78 77 70 +63 59 55 54 51 +39 35 33 30 29 25 23 26 +90 86 83 79 77 75 74 74 +70 66 63 62 61 57 53 +63 59 56 52 51 48 45 38 +77 73 67 66 64 62 61 +22 18 15 14 8 5 8 +82 78 76 75 68 66 66 +31 27 22 21 17 +70 66 61 58 57 51 +61 54 52 49 46 45 43 +81 75 72 69 66 65 66 +37 30 29 28 25 24 24 +75 70 67 65 64 60 +59 53 50 47 44 41 40 34 +48 43 45 43 42 +41 34 37 35 38 +52 46 43 41 40 37 39 39 +38 32 35 32 29 27 23 +76 70 73 71 69 66 60 +16 11 9 9 6 5 +20 13 13 10 8 10 +71 66 64 63 61 61 61 +60 55 53 51 51 47 +27 20 20 18 17 10 +83 77 75 73 71 67 65 62 +87 81 79 75 78 +81 75 71 69 66 66 +76 71 70 67 65 61 57 +72 67 64 62 59 56 52 45 +39 32 30 24 23 20 17 15 +94 88 86 80 79 82 +27 20 19 13 10 10 +96 89 82 80 77 73 +34 27 25 20 18 16 11 +46 47 49 50 54 56 59 63 +87 87 90 91 92 91 92 92 +80 81 80 78 75 68 67 67 +29 28 25 23 18 15 13 +29 29 27 24 21 17 +62 64 65 64 66 69 72 72 +18 18 21 24 21 28 +55 57 52 49 45 +76 78 76 73 69 66 66 +77 76 73 70 66 60 +73 77 81 84 86 +64 70 72 75 78 81 81 81 +79 80 87 89 90 91 96 +22 26 29 28 30 36 +76 73 72 70 70 68 66 63 +44 41 42 44 46 52 +47 47 45 44 41 39 38 37 +52 50 48 48 47 47 +33 37 41 42 43 45 45 +31 37 37 39 42 45 46 +36 38 40 43 46 51 +69 62 61 59 58 55 55 +64 66 67 67 69 71 69 +58 58 60 60 63 +50 53 51 52 50 47 43 +76 72 70 69 67 69 +38 33 32 34 33 +20 20 17 17 16 13 7 +49 50 52 53 57 58 +67 66 67 70 72 74 77 80 +54 50 45 43 41 38 35 35 +13 12 13 14 18 +90 86 82 81 79 72 +97 90 89 85 82 82 +70 77 79 81 88 90 92 96 +89 85 82 82 83 +41 41 40 39 39 37 34 +43 41 44 47 46 49 +38 42 47 48 49 +89 90 97 99 98 +20 27 31 32 35 38 38 +41 41 38 37 34 32 32 +23 19 17 16 15 16 16 +93 93 92 91 90 92 +79 75 74 73 69 66 65 61 +67 70 71 72 73 75 78 78 +35 40 41 42 39 38 +87 84 83 81 78 77 76 76 +62 56 55 58 54 +55 53 57 60 63 64 +20 22 19 20 19 19 +14 14 11 14 16 +27 26 27 28 31 30 31 37 +15 9 8 7 6 6 2 +41 38 37 30 29 27 21 +70 75 76 77 80 83 86 86 +20 18 14 13 10 7 3 +47 44 40 38 36 +10 14 15 18 19 20 22 27 +60 60 62 64 66 69 74 76 +13 17 15 17 18 19 20 17 +12 11 13 15 15 16 +97 97 94 91 91 94 +30 32 33 33 36 39 41 45 +46 40 39 36 39 +33 39 41 44 48 50 49 +31 31 29 27 25 18 16 18 +12 12 15 17 19 23 21 +43 42 45 45 46 49 46 +47 49 50 52 53 56 59 63 +59 60 58 58 56 54 53 +15 20 22 25 27 28 34 37 +54 57 58 59 62 68 69 +43 47 49 50 48 +63 67 68 69 71 74 78 +82 85 84 80 77 74 71 67 +85 90 91 94 95 98 97 +85 81 79 80 77 76 +26 20 16 14 13 11 5 +57 59 60 63 62 65 68 72 +21 21 18 12 7 +62 59 57 55 54 51 50 44 +64 66 65 65 60 +12 16 15 17 19 +12 14 14 13 11 8 8 +92 90 89 91 93 95 97 95 +90 88 91 93 95 92 +79 84 87 94 95 96 99 96 +20 23 24 26 29 33 34 41 +48 43 42 41 40 37 +37 37 40 39 36 36 +56 56 57 58 61 60 +68 66 66 65 63 61 58 53 +59 61 60 57 57 +56 49 47 49 47 46 43 36 +21 19 17 16 10 9 7 7 +28 35 38 42 43 50 +83 83 80 77 76 72 69 69 +33 32 36 38 39 40 44 +67 71 72 73 72 74 77 81 +31 36 39 39 41 45 +61 64 68 71 73 70 +64 64 64 67 70 73 76 82 +47 40 39 36 33 31 28 22 +48 51 49 44 42 41 +48 47 48 50 51 51 51 +69 69 73 74 77 79 81 85 +5 9 10 13 15 15 17 21 +71 75 78 82 87 +46 42 39 38 35 36 35 38 +10 12 14 17 18 22 23 23 +75 76 76 78 81 83 85 85 +11 15 16 18 19 23 27 +64 68 75 76 79 82 87 +81 79 76 73 75 75 +21 17 15 10 9 6 4 3 +67 74 76 77 82 +22 26 30 32 35 32 +23 20 17 15 13 11 10 6 +64 63 62 60 55 53 56 +34 34 36 40 42 44 +43 43 42 42 38 +31 28 32 33 36 39 36 +74 71 75 77 79 81 88 +97 90 88 86 79 73 +60 60 61 63 64 68 +46 44 41 44 48 +17 13 14 13 12 9 8 4 +75 69 67 64 59 57 58 +27 21 21 19 16 14 9 +29 29 26 23 21 20 18 11 +57 60 63 66 67 69 71 68 +75 78 75 73 74 71 73 +46 40 33 30 27 24 22 22 +71 73 69 66 63 65 +79 81 80 82 84 81 +79 83 84 85 86 88 89 89 +8 12 17 20 23 27 +78 83 86 89 91 95 99 +39 40 38 35 28 25 24 25 +50 47 50 51 53 59 56 +75 75 74 70 69 67 70 +81 74 73 71 70 66 62 +34 30 27 23 20 17 15 15 +49 52 49 46 43 41 +50 55 56 53 57 +57 57 57 59 60 64 +87 81 80 77 80 78 78 +69 68 71 72 73 74 78 78 +46 40 38 31 29 27 25 +24 23 22 22 19 16 14 16 +22 27 28 31 32 33 +90 90 84 81 80 76 +51 55 58 59 60 63 66 +9 7 14 16 20 +47 51 53 53 55 57 58 +63 59 56 53 50 47 40 +52 45 42 38 35 34 33 +27 24 24 26 32 +13 18 21 22 19 20 23 +21 20 23 25 32 33 35 35 +80 81 82 85 86 86 92 +49 49 51 50 48 46 43 41 +69 63 62 61 57 56 55 57 +8 8 9 11 8 12 +90 86 83 81 84 78 +94 94 91 88 85 81 79 73 +14 17 16 15 12 10 7 3 +70 65 63 63 60 60 +72 72 70 66 63 61 58 54 +72 68 66 63 56 54 50 +56 55 52 51 50 48 44 45 +95 88 88 87 86 83 85 +41 45 47 50 55 58 58 +71 74 77 74 73 70 67 60 +74 74 81 83 85 86 87 91 +22 26 27 25 25 +89 88 85 84 87 89 +86 84 81 82 81 74 +49 42 37 34 30 +83 81 86 89 96 +82 77 79 77 80 +24 29 30 33 36 40 41 +62 69 72 75 77 81 +27 23 20 18 17 14 14 +25 26 21 20 19 12 +18 18 16 15 16 13 12 6 +65 65 62 61 58 52 51 51 +53 53 55 56 59 66 73 +52 55 56 54 56 59 +87 90 88 87 89 +68 64 61 58 55 52 50 +76 77 75 78 77 74 +53 49 47 44 40 +66 62 60 59 55 53 55 +73 69 65 63 60 58 55 52 +10 17 19 26 28 34 +36 36 38 40 42 46 47 47 +29 33 36 36 37 39 36 +6 9 16 19 22 26 +46 40 40 38 36 34 33 +70 70 71 72 73 80 83 83 +66 64 61 60 60 57 53 +38 34 27 26 24 23 25 +70 67 66 69 70 73 73 +15 12 10 7 5 +61 62 65 66 69 71 73 76 +75 76 77 80 82 85 87 90 +83 82 81 78 76 +52 50 48 46 43 42 +34 32 31 30 29 27 +53 55 57 58 61 64 65 68 +23 22 19 18 16 15 +36 35 33 30 29 26 23 21 +43 41 38 35 32 31 28 +96 94 91 89 88 86 84 83 +94 93 92 90 87 85 84 81 +83 86 89 90 93 +42 45 48 51 52 53 +3 4 6 7 10 +83 81 80 78 77 74 71 69 +69 66 63 61 58 +17 16 14 12 9 +74 73 70 68 65 63 +41 44 46 47 48 51 +81 79 78 77 74 +11 14 16 17 18 21 23 +79 82 83 85 86 89 92 95 +88 87 86 83 82 79 76 +28 31 33 36 37 38 40 +55 56 59 60 61 63 65 +57 60 62 64 67 70 73 +58 60 63 66 69 70 73 74 +24 22 21 20 18 +76 79 82 85 87 90 93 +29 27 25 23 22 +31 32 33 35 37 39 40 +14 12 11 8 7 5 4 +80 77 74 71 68 67 66 63 +57 59 60 63 65 66 69 +96 93 92 90 87 85 +76 77 80 82 83 86 +20 23 25 27 30 32 +26 29 32 34 37 38 41 +31 30 29 27 24 +31 34 35 36 37 38 41 +78 77 75 72 71 69 66 +49 47 45 42 40 37 34 +94 93 92 91 88 +81 78 76 75 74 72 71 +7 10 13 16 17 20 23 +63 64 66 67 68 +9 7 5 4 3 +75 73 71 68 66 64 61 +64 67 68 69 71 74 +60 62 64 67 70 71 73 +63 64 67 70 73 75 +95 93 92 89 88 +40 39 38 36 35 +30 28 26 24 23 +26 24 21 20 18 17 15 +90 91 92 93 96 97 +4 5 6 8 10 12 14 +36 33 32 30 28 +67 66 64 62 60 58 56 +52 51 49 48 46 45 +16 17 18 21 23 24 27 28 +26 28 31 33 35 37 39 40 +79 81 82 85 88 +36 39 41 44 46 +43 45 46 48 51 52 53 +49 46 45 43 41 39 +24 27 29 32 34 36 +55 54 52 49 48 +69 72 75 77 80 81 82 +13 12 10 7 6 +9 10 12 15 16 18 20 +76 77 78 80 81 82 84 +68 71 72 73 74 +26 24 23 22 20 18 +38 37 34 33 30 29 +53 52 49 48 47 45 42 +32 30 27 24 22 20 18 +34 35 37 38 41 44 46 +5 6 8 10 13 16 17 19 +40 38 37 34 31 28 25 23 +4 6 7 9 12 15 18 +9 11 13 14 16 19 22 23 +69 67 66 65 63 62 59 57 +81 84 85 87 90 91 94 97 +54 56 59 62 65 67 68 70 +53 55 58 61 64 +65 66 69 71 74 76 77 +93 92 90 88 87 85 83 81 +83 80 77 75 74 +77 76 75 74 73 +90 88 85 84 82 80 77 74 +58 60 61 62 65 +2 5 7 8 9 10 12 +46 45 44 41 40 +85 83 82 80 79 77 75 72 +99 97 95 93 92 89 +67 69 72 75 78 +79 77 76 74 72 +43 45 48 51 54 57 60 +98 95 92 91 90 88 +41 44 47 49 52 55 56 57 +68 66 64 62 61 59 56 55 +66 69 72 74 76 78 80 81 +72 75 76 79 81 84 86 +99 97 94 91 89 +52 55 58 59 61 63 +80 81 84 86 88 91 93 +8 9 10 12 15 17 18 +90 91 93 96 99 +30 31 34 36 38 +90 88 85 82 79 76 74 72 +82 84 87 88 89 92 +12 9 7 6 3 +83 84 87 89 91 94 97 +33 36 39 41 42 45 48 +7 8 11 13 14 15 +48 49 50 51 54 56 +92 89 86 83 80 78 +60 62 63 66 67 70 71 +25 24 21 19 16 13 +29 26 25 23 21 +71 68 67 64 63 +83 85 88 89 90 91 93 95 +2 4 7 10 12 13 +54 53 50 47 45 +8 10 12 13 15 18 19 20 +83 82 81 80 77 76 74 71 +93 90 88 87 85 84 81 79 +76 77 80 81 82 85 86 +42 39 37 36 34 32 29 26 +48 47 46 44 41 39 36 +39 38 37 36 33 32 30 +12 15 17 19 20 21 22 +30 29 28 27 24 22 +37 40 42 43 46 48 50 +35 38 39 42 45 48 50 +55 58 59 60 62 +7 8 11 13 15 16 18 +68 67 66 64 61 60 +77 79 81 83 84 87 88 +60 59 56 54 52 51 50 49 +14 16 17 20 22 25 28 30 +60 63 66 68 69 70 72 +19 16 14 11 9 6 5 3 +57 58 61 64 65 66 68 +44 42 41 38 37 +72 74 75 78 79 82 84 +51 54 56 59 60 +69 67 66 64 62 +33 30 27 25 24 +56 54 53 52 50 48 +76 78 81 84 86 89 90 93 +77 74 71 68 66 64 61 59 +41 39 36 35 32 31 +75 73 71 69 68 67 64 +75 76 78 81 82 83 +78 81 83 86 87 88 91 94 +33 30 27 25 24 21 19 16 +46 47 48 50 51 54 56 59 +76 78 79 82 84 87 +71 73 75 77 78 79 80 +52 54 56 59 61 63 65 +7 10 12 13 15 18 +3 6 8 10 12 13 +78 80 82 84 86 +58 55 53 50 47 45 +88 85 82 79 78 77 74 +8 7 6 5 3 2 +38 36 33 30 29 28 +59 62 63 66 68 70 +83 86 88 89 91 93 96 99 +19 21 23 26 28 31 +14 16 19 22 25 27 +91 90 88 87 86 85 84 83 +5 8 11 14 17 18 20 +87 88 91 92 94 96 97 +4 5 6 8 9 +32 30 27 24 23 20 +56 55 54 52 49 48 +31 30 28 27 24 22 19 +79 82 85 86 88 89 90 91 +92 89 87 84 83 80 +75 72 71 69 67 +54 51 49 46 45 44 41 38 +38 36 35 34 31 +68 66 63 62 59 58 +90 89 87 86 84 81 78 +51 52 54 57 59 60 61 62 +18 19 20 21 23 25 +52 50 47 45 44 +71 73 74 76 79 82 85 +19 21 23 25 26 +47 46 43 41 40 38 36 33 +32 35 37 40 42 43 45 +57 54 52 50 47 46 44 42 +33 35 37 40 43 44 +38 35 33 32 29 26 24 23 +63 61 60 57 56 +90 87 84 83 81 80 79 76 +11 13 14 15 18 19 21 +59 56 53 51 48 47 44 +54 56 57 60 61 63 +26 27 29 31 34 35 38 +64 63 61 59 58 55 54 +17 15 14 12 10 7 +85 86 88 91 94 +23 26 29 30 32 33 36 37 +31 32 33 34 36 38 39 +88 89 92 94 97 +74 72 70 67 64 61 +18 17 14 11 10 8 5 2 +66 63 60 57 54 51 48 +49 52 55 56 58 59 62 +55 52 49 48 47 46 45 +59 57 56 55 54 53 50 +25 26 28 29 31 32 33 +52 50 48 47 46 45 44 41 +48 47 46 44 41 +16 14 13 12 9 +18 19 20 21 24 +34 37 40 43 44 +46 49 51 54 56 +81 79 78 77 75 72 69 68 +26 24 22 19 17 16 13 +19 21 24 26 27 30 +13 14 16 18 19 22 24 26 +41 43 45 46 47 48 +92 89 87 85 84 +34 35 38 39 40 41 44 +96 95 93 90 89 +66 68 69 70 71 72 +82 79 78 77 74 +40 38 37 34 33 31 28 +71 72 74 76 78 80 81 83 +37 36 34 32 31 28 27 25 +40 42 44 47 49 51 52 +84 81 78 77 76 75 +22 23 25 26 29 31 32 35 +35 34 33 31 29 28 25 +34 36 38 41 44 46 47 49 +51 48 46 43 42 41 38 36 +1 2 4 5 7 +70 68 65 64 62 +34 31 30 29 27 26 +35 34 31 29 26 +33 35 38 39 42 45 +65 64 61 59 56 53 +65 63 60 57 55 +38 36 33 32 29 +59 61 64 65 66 +93 92 89 86 84 83 82 +14 13 12 9 7 +63 66 69 70 72 75 76 79 +31 32 33 36 37 39 +37 39 40 42 45 47 +20 22 23 25 26 +55 52 49 46 45 42 +19 21 23 24 27 30 33 +2 4 6 7 9 12 15 16 +76 79 80 82 83 84 87 +49 51 52 53 55 57 +54 55 57 59 61 +3 5 6 9 12 14 15 +95 92 91 88 87 84 83 80 +54 56 57 58 61 62 63 +1 3 5 6 8 10 +76 79 80 82 85 +21 23 24 27 28 31 33 +52 49 46 43 41 40 38 +69 71 74 76 77 +57 55 52 49 48 +22 19 16 14 11 +67 68 70 72 73 74 75 76 +17 14 13 10 7 6 3 2 +76 73 72 71 69 67 66 +70 72 73 75 78 79 +56 53 50 47 44 43 42 39 +72 70 68 66 64 61 +80 81 84 86 87 90 +35 32 29 28 26 25 +30 33 35 36 39 40 41 43 +62 59 57 56 53 +51 48 46 44 43 +32 31 29 28 25 23 21 19 +90 89 87 85 84 81 80 79 +66 64 62 59 56 55 54 53 +70 71 72 73 74 76 79 81 +84 86 88 89 92 94 95 98 +61 60 58 56 54 +79 81 83 86 87 89 92 +23 20 17 16 15 14 11 8 +39 38 37 34 33 32 +14 13 10 8 7 6 +29 31 34 37 38 41 43 +22 24 26 28 29 30 +31 28 27 25 24 +51 50 49 48 46 44 43 +69 70 71 74 75 77 diff --git a/2024/3/3-1.sh b/2024/3/3-1.sh new file mode 100644 index 0000000..fecdeda --- /dev/null +++ b/2024/3/3-1.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# Find valid calls of mul +valid_mull_calls=$(cat input.txt | grep 'mul([[:digit:]]\+,[[:digit:]]\+)' -o) + +# Remove everything except the numbers with delimiting commas. +mul_args_only=$(echo "$valid_mull_calls" | sed 's/mul(//g' | sed 's/)//g') + +mul () { + # Takes a string of number1,number2 and multiplies them. + local multiplicand=$(echo $1 | cut -d , -f 1) + local multiplier=$(echo $1 | cut -d , -f 2) + echo $((multiplicand * multiplier)) + +} + +total=0 +# Loop over multiplicand,multiplier pairs and aggregate the sum of their products. +for args in $( echo $mul_args_only | xargs ); do + product=$(mul $args) + total=$((total + product)) +done + +echo $total + diff --git a/2024/3/3-2.sh b/2024/3/3-2.sh new file mode 100644 index 0000000..c0519fe --- /dev/null +++ b/2024/3/3-2.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# Find valid calls of mul(), do(), and don't() +function_calls=$(cat input.txt | grep -e 'mul([[:digit:]]\+,[[:digit:]]\+)' -e 'do()' -e "don't()" -o) + +mul () { + # Takes a string of number1,number2 and multiplies them. + local multiplicand=$(echo $1 | cut -d , -f 1) + local multiplier=$(echo $1 | cut -d , -f 2) + echo $((multiplicand * multiplier)) + +} + +total=0 +doing=1 + +# Loop over the function calls and execute them. Need -0 to ignore single quotes. +for call in $( echo $function_calls | xargs -0 ); do + + if [ $call == 'do()' ]; then + doing=1 + elif [ $call == "don't()" ]; then + doing=0 + elif [ $doing -eq 0 ]; then + continue + else + args=$(echo $call | sed 's/mul(//g' | sed 's/)//g') + product=$(mul $args) + total=$((total + product)) + fi + +done + +echo $total + diff --git a/2024/3/input.txt b/2024/3/input.txt new file mode 100644 index 0000000..48b3b3c --- /dev/null +++ b/2024/3/input.txt @@ -0,0 +1,6 @@ +!mul(417,528)why();what()?how()from()who()where() ~mul(215,18){} ])/from()*do(),)* ##select()mul(89,59):*select(805,600)*mul(709,138)-!how()$+*why(747,290)>mul(548,826)^@-^%@,@mul(103,952)^why():mul(322,877)select()+who()%?[mul(378,598)<;[&(-*' mul(695,169)??where()mul(12,677){$?:(}*why()mul(911,924) *+/select()*/?,from(952,471)mul(12,238))who()(,'^when()mul(462,732)]when()%what()*%${)/mul(66,827)/ where()@!*&@do()}mul(87,111)),:select()mul(891,433)>mul(87,681)]mul(753,736)mul(469,856)@why()}{mul(51,85)why()'@: :,[*do()how()!$[who()mul(877,991)$:'}select()!mul(127,485),}%@,do()@ #{&(select();mul(41,26)}who()!why()^mul(780,997)mul(155,624)/?!, mul(181,7)@?%how()mul(742,580)>(&what()mul(370,366)#[[from()]%where()how()mul(437,895)+@mul(556,541)what()select()(##mul(742,271)<#'select()}}+(%*do()select();>]from()>mul(495,834)(who()why()}^-~:mul(623,691){}where()]mul(755,380):{[ { ;&mul(496,505)*-@();>mul(447,864)select();who()mul(672,810)where()%^;mul(631,935)]don't()*#}#}mul(441,758)>&${@how():[mul(871,857);^,-])**mul(149,63)<*what()mul(159,555)what(){/mul(942,324)({@when()[!mul(484,36)who()!mul(850,799)/^,#/@,@mul(329,433)+)what()why()%how(){mul(444,542)mul(656,517)&~ mul(205,556)what()&']@%;/-,mul(388,422)select()who()]how();{(mul(556,273)when()>&-how()mul(6,7);, [mul(240,752)%@@^do()*&what()mul{/who()where(502,158)select();>mul(332,237)%select();#%)<#mul(726,568)don't()^#!#+ 'mul(507,419):$why()mul(537,103)@>don't()select()+)(*<>+ mul(722,320)(^'?%select()+how()]?mul(881,762)[{where()},don't(),}when()^how(408,817)who()mul(933,318)why()/from()@what()%,//mul(307,701):#^';who(133,506){mul(487when()(mul(487,49)}/mul(509,654)^>mul(307,525)mul(186,292)select()}how()!!;mul(935,682-~>!~' mul(566,401)'-<:select()+$']?mul(179,671)(!mul(111,997)why()when(126,237)^,'@['^mul(258,627)^<%mul(92,748)what()*who()select(657,821)^]^mul(544,427)!?&!from(),(#?mul(90,159){$when()/;/when()mul(81,407)-$}from()when()?how()&-mul(427,159){;[mul(797,616)]how()(@mul(480,791)}]-mul(772,510)-why(462,891)mul(347,567)~<[*mul(717,474)do()$how()mul(905,578)(where()';do()%mul(38,555)$% from(680,344))%~select()mul(62,626)mul(82who()! who()?$:$:,mul(653,287)^;mul(526,575)[/)%[>?>![mul(853,659)why()^ mul(60,505)mul(253,318)mul(933,174)~!why(514,940)how()from(),mul(572,64)who()who()mul(73,528)+who()>#/}$why()select()#mul(911,546who(8,112)]mul(319,153);&-+who()%what()when()select()-mul(84,761)&mul(84,908),!mul(218,854)+#don't()mul(708,742) +?;*(select()&why()mul(902,999)select();-when()[from()mul(423,377)+{ %) ^,why()mul(246,928)who()}mul(927,70)-{how()!,$@where()$who()[@&]@do()'why(138,562),# what()]mul(713,202)<--,)where();{mul(233,873),,don't()-why()mul(61,301),+why()mul(223'/*when()/($mul(847,175)how()?what(),<;^$how();mul(976,577))from()>}mul(302,245)->mul(446,538)@select()#//mul(422,22):$what()]+who()]-;mul(856,262)]mul(881,439)what();/$from()*:mul(758,296)^where()?#@mul(716,279)mul(104,52)]from()where()?(mul(365]mul(59,16)how(997,442)where(844,176)mul(205,444)why():{when()why(381,541):*)+mul(636,976)++&~}#mul(519,587);[<*+how()who()^mul(717,515)from()mul&&$$mul(180,63)!$^mul(797,465)(who()-}what()mul(988,210)select()@where()select()how()!)when()@do()from(767,729)~>what()}mul(864,883)mul(361,638)how()mul(703,895)/;% ,mul(149,597)mul(788,875)^?{what()$&mul(569,626){'where())mulwhere()~from(921,224)/!,':mul(97,835) mul(446,114)$)(,&;who()}']mul(101,565)&*;&}]+mul(611,566)mul(650,460)from()?~-^who(523,336)do()where(961,22)mul;what()-;:;^&$>mul(710,177)mul(301,438)mul(315,413)@}~when()what(451,582)what()where()*from()who()mul(458,465)what()mul(848,195)when()who(676,932)< }*mul(580,113)where(535,4)/-when()select()^why()when()mul(271,737)how()^( ;mul(31,415)?;mul(915,200)<+ where()>^mul(519,208){select(288,908)]where();*who()who()mul(9,52):mul(450,463)what()^>:select()'mul(773,234)*!@>} :mul(764,767)who(),~select()#!:what()]mul(849,737)mul(112,47)&mul(942,605)what()from()mul(207,293)(how(938,318)&]]{'mul(400,524)>what(653,663)]who(481,311)%)(~,+mul(849,23)mul(535,809)where()how()^:? where()mul(688,711)-where()&, '-%^*!mul(614,499)%):~$~%^do()-){%mul(75,117)@why())~what()@,where()mul(514,255),mul(281,798)%?$/why()mul(468,659)why()select()!{why(){}mul(57,359)how()']how()select()}^>why():mul(568,428)when()from()*,(#mul(203,107)'@/$!what():where()^@mul(991,672) ;what(602,659)//mul(285,658)!~<@)/&+<%mul(361,464)@what()why()why()}^ *#mul(658,997) +mul(874,358)'who()?>$!mul(664,429)$;#select()@-~why()-&+@mul(670,732)mul(250,629)*!why()how()why()^!where()mul(160,358)!@?-mul(340,875)select()select()select()why(390,853)++@<(mul(446,277)#how()#!mul(934,452):}@why(),mul(878,762):why(512,389)^select();/what()mul(734,359){$*,$mul(807,660)how()%where()^mul(863,221)do()^#mul(139,324)mul(657,162)select()^^$>(}]},mul(145,462)why()>who()}who(762,591)mul(455,843)/mul(450,804))when();:/ mul(718,128):%$~how()]#mul(855,492)mul(630,688)where()~/+how()}?>mul(946,971):mul(88,670)$-*@[/mul(193,928)why(){when()how()what()mul#[%why()from()}mul(776,879)'how(486,894)>?$^; &/mul(725,446)where(159,316) ]mul(135,955);when()when()+){@where()mul(545,478))mul(593,322)mul(996,385) 'when()]where()when()@{mul(116,9))/,who()#?()$why()mul(716,812)how()%mul(185,170)?who()]:(mul(489,880)-*mul(615,9)<>{who()+?~<'when()mulhow()($[!,}where()do()* why() why()%@mul(831,430);mul(884,837)$?how()mul(971,593)@mul(11,968):*;]]%<+@who()do();'mul(195,287):select()what() '%;?>who()mul(829,334)^#$mul(691,485)select()*where()#(&{:(mul(67,42))+mul(994,216),/;mul(573,201?&?[%what()select()from()mul(923,522)<,mul(582,635)-{how()@^what()#]mul(540,272)&where()<$<]^mul(892,661)~-what()~)/+select()mul-/mul(395,677)-~) ^[mul(283,439)~[&%;!select()how()select()mul(306,827);$what();;mul(715,794){),don't()^+,[},when()^mul(981,859){?where()?+why()#}&mul(760,505)^who()from()' ^)@~mul(5from()how()*don't()%why()%why()select()@mul(366,566)select()#}?how()#mul(880,748)where():select()*don't(),what()when(){'mul(490,454)(mul(184,597)+#who()#who()mul(740,687)]-when()&(~ {&*mul(29,176)mul(391,330)[#[?&$mul(873,461),?*mul?mul(347,627)-who()'!'(/ ,mul(743,456)how(746,704)*#;?+what()do()what()![}why(805,995)mul(476,619)>)+[?mul:[<}>-mul(558,189)what()mul(898,431)~*mul(272,96))@^# mul(114,12)when(855,691){%how()select(288,35)mul(140,45):*mul(618,246)?,*-how()+where(256,285)>'(mul(699,148)~who()mul(576,716)+where())how()mul(194,425)<}!,]$$^why())mul(904,315)what()/mul(576,266)~!mul(760,106)*(who()#]'from()from()mul(238,430)mul(297,50)who()from(62,855)^why()^:who()~ &mul(508,388)-$from()where()select()mul(918,677)!}mul(861,43)mul(364,143))select()+:&>mul(545,492)why()#,when()how())#mul(752,636)(?[#/mul(134,628) -}select()#/select())]mul(739,697)'/@^where()when()#mul(671,108):&mul(537,520)mul(782,162)@~what()?mul(632,411)mul(183,400) +#:how()#!/usr/bin/perlwhy()';!when(707,218)%select()%mul(863,599)who()~ (~mul(259,757),}>~mul(46,54)mul(229,76)];{~ ^what()#{mul(387,490))? ^-#mul(601,351):mul(77,47)^),@$~&@<$don't()from()[;,~@{mul(962,583)what()mul(679,260)* % !$mul(670,236)>what()]select()how()@&where()mul(146,945)why()}*(:mul(597,821))why()%:,[]&mul(789,718who(){'what()@*}mul(987,310)how()#who()-mul(393,516)(,why());;mul(537,865)!:mul(877,754)don't()how()(';select()where()!(@what()mul(946,172)[)}from()where()?how()from()from()who()mul(94,833)%^?&{why()+<]who(275,344)mul(19,81){;} :mul(659,792)-~,mul(422,489),##!mul(167,933)>](mul(547,286)from()@-(~why():!from()mul(26,168)*' ~%&,mul(59,711)#~;mul(954,295)where()don't()- #%where()from()>)+where()mulselect()where()'-where(262,993){%(from(){mul(184,154)?mul(497,2)why()mul(315,343)from()from()*,who(296,797){@mul(140,640)when()who()-who()? %don't()select()who()who(700,153)mul(82,354)('@#?don't()mul(43-what()*^]mul(720,519)%from()mul(290,756)select(){how()mul(22,792)mul(930,773)^+mul<}where()mul(74,878)do()}$,~*&'when()#-mul(884,120)}]^mul(437,916))what())/~don't())]+mul(877,622)~&#,'mul(273,208)when()?how()mul(359,850)?:mul(107,183)mul(2,8)mul(842,948)who()how()[mul(528,204)don't()#~select()when()select()?-mul(107,594)mul(468,837)who()&}, ;^mul(950,280)>%where()how()where()/*mul(651,115)*:}~)from()~#@}mul(309,996)(mul(32,243)who()+(~, */;mul(94,65)>select();&:from()@;what()*mul(620,136)mul(260,479)&why()+?/**{]mul(632,798:[select()*mul(268,303)[&]-^who())!-mul(741,47)~select()when()@why()}^?mul(938,627)what(423,839)-&why(570,484)mul(126,61){/&$-mul(7,354)from()what())do()/; {+mul(110,879)%;#mul(423,374):how()how(142,360)why()*mul(700^~>mul(557,663)}when()mul(751,856)*~mul(504,359)}]@from()*$what():,mul(129,586)where())where(722,43)how()]&&mul(616,487)+who()#^where()^/mul(197,217)when()how()how()#,[,from()^?mul(119,634)+when()who(643,73)mul(555,656)!why()mul(844,315):{/ ('mul(861,130)why(),[who()<[!mul(503,343)mul(572,6)mul(639,136)% why()[where(),mul(840,873)$)don't();:mul(791,309)(where()/)mul(505,475),who())mul(670,413)#+-{who()mul(928,244)when(){#select()where() mul}>! (mul(715,624)*what()!{[}#mul(729,805)'&],[&~($mul(884,813)mul(245,381)&mul(903,569)&from()how(670,55)how()>mul(991,520)}from()~+[?what(260,603)mul(824,70),why(),from(360,613)mul(339,428)when()[,select()?,mul(554,291)@$when(576,686)+mul(258,620)~(>how()mul(847,507)+?'mul(928,901)~}%/when()'mul(17,668)#;don't()()*)&-what()-when()mul(868,538)*(:)mul(604,236)$]mul(235,215) +why()}do()*:/%select(492,745)#*how()mul(103,86)&*#mulhow()mul(205,551)&//%$]why()-/where(63,224)mul(511,903)*$>*who()^%/mul(926,40)'mul(501,105)}~mul(810,253)[ $!^@#! why()mul(189,604) :[don't():[&(select()mul(581,332)who(523,711)}mul(509,879)}+,(]!!{how(332,10)mul(76,822),when()how()~''$what()mul(578,738)+!where()when()*@mul(305,987)^how()mul(206,528)+{,['>mul(558,134)?how()'{-;mul(379,225)how():;> mul(597,224)from()>[how()@ -%#mul(27,716)~%;-}how()where(){mul(524,894)from()<>!&mul(883,525)mul(914,895)from()who()~when()>:-mul(866,183))how()mul(129select()+how()where()~from()%!&)@mul(294,652)@~what()mul(763,956)?mul(830,845)# @[don't()*//<^<&mul(519,852)#+select()when()don't();-when()mul(632,901)'?mul(551,799)]+^^;who()/from()mul(727,533)*>- !where(537,328){mul(909,933)why()?&!)^mul(107,746)--,what()+ mul(153,207)who()-(where()mul(518,977)mul(569,966)mul(8,736)(-}>'mul(325,957)^&?when()mul(638,27)&[*%?what(606,492)where()^mul-mul(759,906)+[}+when()how() 'mul(603,79)<} where()(/[mul(191,666)select()when(),<@:where(950,986)'mul(395,206]who()~how()mul(904,618)-;$&#~(:mul(887,833)?'&how(){:do()}when(616,671)why()/?how(){mul(949,622)]why()$;!why()!mul(895,650)#>/where()}$^?^mul(280,116)'{mul(118,570)*why():}mul(103,762)[(mul(602,859)&mul(637,550)!]where()}:%(mul(661,868)^!select()?when(548,101)when()(mul(978,457)why()mul(421,976)how(714,794)mul(79,487)<*{[+[what()where(425,881)'mul(775,827):mul(260,742)^:~mul(614,982)[$(mulwhen()!%)&mul(271,715)()+;what()&) mul(722,687);*why()^'(,how()from()mul(934,463)-#mul(895,822)why()!];mul(879,833)[-;mul(750,443)':who()?;}why()##mul(214,657)why()+from()&$(mul(509,725)}$why()@when(822,113)!&'when()who()mul(911,719)[; mul(441,647)]<$:mul(714,781)%&@mul(506,291);why(52,660)(mul(471,954)mul(487,853)>*'mul(117,603)mul(26,939)@(^+select()why()select()where()mul(905,612){mul(479,266)how()**where()where()mul(451,254)(select()%{select()-@when() do()when()how()}how()how()mul{' how()&<>]mul(672,957)where()who()select()mul(460,110) -)mul(696,661)how()}how()how() &+do()]!$mul%)%when()}$*>^mul(276,105)~how();what()mul(634,101)who()]why();>$why()[##mul(72,130)''{why()mul(145,383$<,])'how()*why()>?mul(462,95)/}from()select(24,983)-??do()/%>when()how()where()why()(mul(446,844)what()?#;:$mul(539>+^why()!/mul(481,966)~+()#mul(657,897) +^>}^!why()*mul(840,962)what();what(608,116) %?^mul(605,595)<[from()(mul(599,814why()-how()~mul(680,773):+from()~do()#what()when()mul(858,458)(who()select()@;$mul(416,54),why()#^-mul(578,930?*mul(564,323)%:from(79,481)*where()%$mul(604,687)how(239,166)%,where()what();~why()@mul(198,935)@??{why()who()@{mul(43,352)$^!!>{}>#?mul(49,571)when()when()('when()]%mul(296,622)who()*,mul~ how()'*'+,mul(677,166)]#}do()^select())$^+)%mul(242,920);^*where()!?!;(#mul(654,14)who()%* ^~from()}mul(395,534)],~select())-%>when()mul(970,894)^ ?'+,where()where(966,268)how()where()mul(605,722)mul(455,920)(->[[;]mul(977,500)!select()(>?mul(238,178)why()mul'#from()why(757,62)mul(200,544) mul(779,866)@+mul(998,603)#*>+[^where()who()where()?from()/mul(887,533)^%+'^#+/mul(608,818)!when())[select()-select()when() [mul(113,25)~(from()from()mul(56,67)~(;select()what()!{don't()when()[^mul(853,126)*?why(477,36)+mul(963,155)mul(590,355)-#;~mul(546,331))why()@when()mul(337,684)^from()mul(43,674)how();-mul(287,386)from()from() 'how()~]select(857,28)mul(854,565)who()/when()from(848,721)select()who()+mul(899,106){-where()mul(252,283)don't()who()~&]who(){&mul(171,684)%,&mul(649,615);where()[where()from();mul(976,418) -where()-do()'[when()why()&(mul(945,948)when()@-how() ^!}mul(756,439);what()how()^mul(381,579)/mul(654,823)] $>%when()>-why()mul(448,211)^%mul(865,203)$&what()::- mul(536,351)-;mul(792,598)who(329,965)when()mul(669,121)~who()<;@ ~^*mul(382,343)mul(620,103)( $transpose_file + done <<< $(cat $1) + + echo "$(cat $transpose_file)" + +} + +lower_triangular_diagonals () { + # Takes a file containing a matrix of letters and prints + # the diagonals of the lower triangle, starting with the major diagonal, + # each on a new line. + + diagonal_file=$(mktemp) + + # Use awk because wc -l undercounts by 1 if the file does not end with a blank line. + local i=$(awk 'END { print NR }' < $1) + + while [ $i -gt 0 ]; do + tail -n $i $1 | awk -F '' '{++f; print $(f + 0)}' | xargs | tr -d ' ' >> $diagonal_file + i=$((i-1)) + done + + cat $diagonal_file + +} + +word_search () { + input=$1 + tupni=$(echo $1 | sed 's/./&\n/g' | tac | xargs | sed 's/ //g') + + # Transpose the grid, both for searching top-to-bottom, and so + # the lower_triangular_diagonals function can get the upper triangular diagonals + # via the transpose. + transposed=$(mktemp) + transpose $2 > $transposed + + # Reverse the grid to get the lower-right triangle, and transpose the reverse + # to get the upper-right triangle. + reversed=$(mktemp) + rev $2 > $reversed + transposed_reversed=$(mktemp) + transpose $reversed > $transposed_reversed + + diagonals=$(mktemp) + + # Lower-left. + lower_triangular_diagonals $2 > $diagonals + + # Upper-left; Use tail -n +2 to avoid saving the major diagonal again. + lower_triangular_diagonals $transposed | tail -n +2 >> $diagonals + + # Lower-right. + lower_triangular_diagonals $reversed >> $diagonals + + # Upper-right; Use tail -n +2 to avoid saving the major diagonal again. + lower_triangular_diagonals $transposed_reversed | tail -n +2 >> $diagonals + + # Search for the word both forward and backward along all orthogonal + # and diagonal slices. + forward=$(cat $2 | grep -o -e "$input" | wc -l) + backward=$(cat $2 | grep -o -e "$tupni" | wc -l) + down=$(cat $transposed | grep -o -e "$input" | wc -l) + up=$(cat $transposed | grep -o -e "$tupni" | wc -l) + criss=$(cat $diagonals | grep -o -e "$input" | wc -l) + cross=$(cat $diagonals | grep -o -e "$tupni" | wc -l) + + + echo $((forward + backward + down + up + criss + cross)) + +} + + +word_search XMAS input.txt \ No newline at end of file diff --git a/2024/4/4-2.sh b/2024/4/4-2.sh new file mode 100644 index 0000000..e69de29 diff --git a/2024/4/input.txt b/2024/4/input.txt new file mode 100644 index 0000000..8a37c23 --- /dev/null +++ b/2024/4/input.txt @@ -0,0 +1,140 @@ +MSMSMAXXAXXXXAXXAXMASMXSXMASMXMXMASMSSXASAMXSAMXXSAMXXMAMMSSMSSSMXSAMXXXXXSXSXSMSMMMMSXMASMMMSMSSSSMMMSAXSSSSSSXMASAMXMSSMMSMMMSAMSAMXAMAMXS +SAAMMAMSSMMMSMMMSMXMXMAMAMAMAAMXMAMXAMXXMMSMSASXMSASAXXMXMAAXXAAAAMMXSMXSAAASAMAAMXSAMXXXAAAAAASAMMAAAMMMMAAAXMASAMXMAXAAAXAXAASMSMXMXSAMSAA +XMXMMAXMAAXAAAMAAAAMXMASAMMXSAMXSSSMMSSXMXAASAMXAXAAXMXSAMSSMMAMMMXMMMSAAMMMMAMSMSAMASXMMSSMMSSMAMSSMSMSAMMMMMMMMMSSXMMSSMSASMXSXAAASAXMMMXS +SSMSSSSSSMMSSMMSSSXSXSXMXSMAXAAAXAAXMAMAMXMXMMMASMMMXMAMAXAMAMSMMSAMSAMXSXSXMMMMAMXSSMXXAAAAAMAMXMAMAXASXXAMXMXAMXAAAXXAAMAMXMAMMMSMMASXMSMM +SAAMAAAXAMXMAXAXXAAMAXMMSMMMSMSSMSMMMASXMASAMAXSXMXSAMMSXMASMMXAAMASMAMAMAMASAMXSMMMMXMASXXMMSSXMAMMSMMMAXSSMSSMSMMSMMMMXAXMASAXAXXXMXMAXXAA +SMMMMMMMMSXSAMXSMMSMAMXXAAAAAXXAXMXASMSASASASMXXAMASMSAAXSAMXAMSMMXMMAMSSMXAMXMAXAXXMASMAMXSXMAAAAMMAMXMSMAAAMAMAAMMXAXXAXMSXSMSMXMMMASXMSSM +MXAASMMXXAXXXAMXXAXAASXSSSMSSSSMMMSMSASXMXSMMMAXAMXSAMMSXMASMSMMSSXMSXSAAMSMSMMASMMASASXSXASASXSMMXSAMXAAMMMAMAXXSMASMMMSMASAXMAXAMASASAMAXM +SSSXSAASMMSSSSXSMSMMASAAAXAMXMASAXASMXMASAMXAMAXAMAMXMAMASAMXMAAAMAAAXMMSMAAAAMASMMXMASAMMXXAMAMAAXAMXSSXMMSXMMSMXMAMSXAAMXMAMSMMASASXSAMMSM +MAXASXMMAXSAXMASAAXSXXMMMMMMMSAMSSXSMMXAMASXMXSAAMASMMAMMAASAMMMMSSMASXAAXMMMMMXSXXAXAMXMAXMAMSMMMSAMAMMMSAMAMSAMXAAAMMSMSSMSMAXSAMASAXAMAAA +MAMXMASMXMMMMMAMMMXAXSXSMXAAXMASAMAXASMMSMMASAXXXMXSMMSSMMXMASXXXAAMXMMSSSSMSXMASXSMSASXXAMSXMAAMASMMXSAMMAMAMSAMXAMXMAMAXAAAMXMAAMMMMMAMMSM +MSSMSAMXAXSXXMASXMASMMMAMSSSMSXMASMSMMAXXASMMXSMMSAMAAAAAMMMMMMXMSSMXMAXAAXAXXMAMAXAAAMMMXXSASXSMMSASAMASMXMXMXAMAXMXMSSMSMMMMSASXMXAXMXSXMA +XAAXMASMMSAMXMAMXXAAAAAAMMAXASMMMAXAMMSAMXMAXMAAAMASMMSSMMSASAAMAAMMSSMMMMMSMMXMMAMMMSMXXXAXAMAMXXMASMSMMXAMXXSAMXSSMMXAXXXSXAAMASAMXSAXSAMX +MSSMSMSMMAASAMXMSMMSSMSSXMAMXSAASXXASAAMXSSMMAMSMXMMXMXMXAMASXSXMASAMXAAMMAMMMAMXAMXAAMMSSSMSMMSMMMAMMAXXXXMMXMXMAMAAXSAMMSXMSMSMMXMAMMMMAMS +XAAAAAMAXMMXMMAAMAXAMXMAASXMAMMMMAMSMMXXMMAXMSXAXXSAMXAMMSMAMAXAMXMASMSMMMAXAMMSAAMMSSSMAAXSAXAAAAMMXSMSSMASAAMXMASXMMMAXXAAMAXSXSAMXSXXMXMX +MXSSMSSMMXXMSXSASMMMSAMXMMAMASASXMMAASMSSSSMSXSMSMMAMSASAMMSMAMMXXXAMXMAXSMSASAAMMMXAAAMMSMSMMSSSMXSAASAASAMSASXSXSXMAAMAMXASMMXASXSMSASMSSS +XMAMXAAXMXSAAAXAAMAXSASXSXXMASAMMASMSMMXAAXXSAXXAASAMSXMMSAAMSSMSSXMMAMMMSASAMXMMXSMMSMMMMASXAAMAXAMMSMSXMMXMMMMMXMASMSXSSMMAXSMMMXXAMAMMAMX +SAMXMSSMSAMMMMMSMSSMSAMAMXXMXMAMSAMMAAXMMMMMMMMSSMMAXXXMXMMMMXAAAXAASMMSAMXMXMSMSXSAXMASXMAMMMMSAMXXMAMXXAMSXMAAXASAMAMMAMASAMSASXSMAMXMMAMM +SXMAXXAMMASMXAXXMMAMMMMSMMSMMMXMMAMSSMMAASAAXMAAXXSXMXMSAMXXXSMMMSSMMSAMMXSMMXSAAASAMSAMAMAXXXAMXMSSSMSASAMMASMMSASXSAMSMSAMSASAMAMMXSAMMSSM +XAMSMSSMSAMAMMSMXXAMASXMAXAMXSMASAMMAMXSXXXSXMSSSMMMSXASXMXMAXAAXAMMMMMXSASAMAMMMAMAXMASASMSMMXMAXSASAXASMAMMMAAMAMAMXXXXMXSXXMXMAMASMMSAMMM +MSMMAMXASXMSXMAXMSXSASXSMMMSAASAMAMSAMMMSMXMAMAAAMAAXAXXMSSMASMMMASXXMAMMAMAMXSXSASXXMASAMXAMXSMSMMAMMMAMMSMXMMMMAMXMSMSMSMMXXSMSMMMXAAMASAS +AAAXSAMXMAAXAXXMXAAMXSAAAAAMMXMXXAMSAMSAAMASMMMAMXMSSXXAMAXMAMXXAAAMAMMXSAXXMMXAXXMXXSAMXMSXSAXXXAMXMXAXMAMAAXXASMSMMSAAAAMAMXAAMAASXMMSXMAS +SMMMXASXSXMSSMSMMMXMAXMSMMXSMMMMMSMMAMMSSSMMXASAXAMXAXMAMASMSSSXSXAMAMAXMAXSAMMMMAXMXMSSMASAMXSASXMXSSSMMMXSAMXXXMAMAMXMSMMSAAMSMSMSAMXXMMAM +AXAASAMASMAXMAAAXAMSMXAXMXASAMXSAXMMAMXAXMAXXASAMSSMAMSSMMSAMAXMXMXXASMAAAAXMMAMMSMXMAMXAMMXMXAAMXAAMMAMMAAMAMSAMXSMXXMXMXAMXSXXXAMXAMXXMMAS +MMMMMAMAMMSMMSMSMXMAAMSMXAXSASAMMSASXMMMMSMMMXMXMAAMXMAMAXMAMSMSAASXMMMXMMMXMMXSMASAMXMASXMASXMSMXMAMSAMMMMSASAMXSXSMMSAMXXSXMASMMSSSMMSSMAS +MSMSSSMMSAMXXXAMXSMMSMAAXMASAMXSSMMMSAASAAAMXAAAMSMMSMSSSMSAMXMXAXSAMXSAXAAMSMAXXXMSMAMAMAMXAXXMXXAAAMASASAMXMXMMSAMXASAXSAMXMAMSXAMAAAAAMAX +MAAXAMAAMASMSMAMAMXMXXSSXMAMAMAXMAMAXSAMMSSMSMSMXXAXXAAAAASXSAMSSMSXMASMSMSAAASAMXXXXAMASXSMMXSAMSSMMSASXMAMXMXMXMXMMASAMMSMAMAMMMASMMMXSMSM +MMSMASXMSAMMAMSMSXAXSAXXAMXSSXMASAMSXMMSAMMAAAAMASMMMMMSMXMASAMAAAXAMAMXAMXMXSMSXMXSXMSASXXASAMAAAXAMMAMASMMAMAMAMASXMMMXMAMAMAXAAXMASMXMAXM +SAXMXMAAMASMSMXAMAMSMMXSSMAMXAAAXAXXXAMSASMSMSMSASAAAAXAMXMMMXMAXASXMASMMSAMXMAXSMASAAMMSMSXMXSMMMSXMAMXXXSAASASASASAAMAASMSMSSSXSMSAMXSMAMX +MASMSSSMMAMAXAMAMAXAAMAMAMASXMMXXSMSMSMSAMAAAXAMASXMXMSAMXMMMMMMSAMASMSAAMMSXMAMAMASMMMMXAMXMAMASXSAMXSSMMMSMXMSASASMMMXXSAMAAAMAMXMAMXAMMMA +XMMAAAXMMXMXMMSSSMSXSMAXAMSAMXSMXXASAXAMMMXMAMSMXMMSAAMMMAXMASAAMMMASXMAMXMAMMXSMMXSMMSSSSSXMXMAMXSASAAXAAMASXXMMMASXMXXMMAMMMXMAXMMSMMMMMSX +MXMXMMMXMXXXAMAMAXAXMXSMSSXMAMMMMMAMAMSMSSXMASAMXSASMSMAXXXSAMMXXAMASXMAMSASASAMXMAMXXAAXXAXSAMSSMSAMMSMSXSASXMASMSMMSSSXAMMSMSSMXSAAAAXAAXX +MASAMAXMXASXXMAXMMSMSAMAXXAMMSAAAMAMAXXAASAXXMAMAMASXMMSXSASASAXSMMMMAMXXXAMAMXSAMMSMMMSMMMMMASAAAMXMXAXMAMXSMSMMMXASAAMSXMAXMASXAMASXMSMXSA +SASASXMAMXMAASASMSMAMAMSMSMMASMSSSXMXSMMMSMMSSSMMMMMMMAMAMASAMAXAXAMSMMSSMSMXMASAXSAMAXAXAXXSXMXMMMAXMAMSAMAMXXAAASMMMSMAXMXSMMSMSSXXXAAXAMM +MMSXMASXXSMSMMAMXAMMMAMAAAXMASAMAMMSMMXMAXAAAAXXASXSAMMMAMMMMMXAMXMMAAXASXMAMMXSXMSMSMSSSSSXMAMXMAXXSAMXSAMSSSMMMMMMXXMXMXMMXAXXMXAAMMXMMSSM +SXXXMMMMAAAXAMXMSSMMXXSMSMSMASMMXMAAAXSXXSSSMAMSASASMSSMAMAAXMXMSASXSSMMSMMAAAXMMMMXMMXAAAAAMSXMMSSSMMSAMXMAAAASXMSSMMMAXSXSMMSSMMSMAAAXAMAM +XXMMXAAMMMSMMMAMAAAAMMMMAMAMMSXSMMSSSMMMXAAXXMMSAMMMXAASASMSMXSMMAMAMXAXMASMSMXSAAMSSMMXMAMMMAAAAAMAAAMXMMMMMMMMAAAAAAMMMAAASMAMAAMXXSAMSSSM +MSMASMSMSAAAXSXMXSMMXAASXMXSMXAAAXMMAMAAMMXMMMAMAMXSMMMSMSXXMASAMAMXMMSXSXMMAXASMXMAAXSSSSSSXSSMMMSAMXSMMAMXAAASMMMSSMXSAMXMSMAXMMXSMMXXXAAS +AAAXSAAXMSSSMMASAMAXMSMMAXSXMMSMSAMXAMMXSMASAMAXASMSASASXSMSMASMMASAAXAASXSXXMMSAMMSMMSAAAAMMMMAMXAASXXAXXXSSSXXAMAAAXAAXSAMXMSMMAXXAXMMMSMM +SASAMMXMMAXAAXAMAMSMMMAMAMMAMMAAXMSSSMXAAMASASMSMSASAMASASAXMAMXSAXMAMMAMASXMXAMMMAAAXMMMMMMAXMXMMMMMAMSXSAAXMASMXMASMMMSAMXXAMAMMMSAMXAAAAX +MAMAMXAAMXXMSMMMMMMXASAMSASAMSMSMXAAAAMSSMMSAMXAXMMMAMMMAMXMMXMMMMSSMAXAMAMMAXMASMMMXXMAXSXSSSMXSAXSMXMAAMMMMMXAAAXXXMXXAAASMASAMAAXMASMXMSM +MSMMSSMSXMMMAXSMAAMAMSMMXAXMMSAMXSMMMMMMAAAMASXMMSXSAMXMMMSMSXMXAMXAASMMMASASAMAMAMSSMXAMSAMAAAASMSASMMMSMXXMMMAMMMAXMXMSMMMMASMMMSSMXAMMSMM +XXAXXMAXXAASMMMMMSSSMMMSMMMSMMAXAXMAMMXMSMMMAXAAAXMASAMXSAAAAMMASXSSMMAMSMSXMXSAXXMAMXAMMSAMSMMMSXSAMXAAMXMMAXSSMAXXMMMXMSAXSASMAMMAXMXXMAAA +MSMMAMAMMSMSAXMAMXMAXXAAAAAMASMMSMMXXXMXXSSMASXMMMSAXXSMSXMMMSMAMAMAXXAMMASAMAMXSMMMSSXSASAMXXAASMMMMXSXSASAAMAXSXMMSMAAXMMMSAMXAXSAMXMXSMXM +AAAAXMMXAAXXAMSSMASXMMSSSMSSXMMAXAMSXSAAXAXMMMMAMAMASXMASXXMAXMAMXMAMXAXSAXXMAMAAAASXMAMASAMXSMXSAAMMXMASASASAXXAMAMAMSSSMSAMAMMMXAMXAAMXSXX +SSSMSASXSXSAMXAAMXMXMAMXAAMMMAMAMAMAASMSMMMSAASAMAMAMMMAMAMMMSMXMSMAMMAMMAMSSMSSSSMSMMSMMSAMMXMAXXMSMAMAMAMAXXMMSXSSMMAXAAMXSAMSSMAXSMSAASXS +MXMAMAXXAXMAMMMSMMMMMMXSMMMMSSMXSSMMXMXMAXAMXXSXSASAMSMMSMXASXXAAXMASAMSMMMMAXAAMXAXXAAAASAMXAMXSXMAMASAMXMXMMSAMAXXXMAXMMMAMASAMMMMXAMMAMXX +MAMMMAMXMSSSMSAAXAAAAMMSAMSXAXMAMAAXSSMSSMSSMXMAMMMXAAAAAXXMSAMMMMMAMMAAAASXSMMMMSXMMSSMMXAMMMSXAAMXSASMSMMSAXASMXMASXSSXAMXSMMMSAMMXMMMSSSM +MSMXMMXAMXAXAMSMSSMSMXAXAMSMSSMSSSMMXXAAXXAAXMSASXSSSSSMXMMAMXMSMSMXXXSMMMSAXAXAAMAXMAXAMSSMAASXSXMAMXSMSAAASXMXMAMSMAAXXXSAAXSASAXXAAXAXAAX +MXXXSASXSMSMMMXXAMXXAMSSSMXAXXAAMXMASMMMSMSSMAMAXAAAAAMXAMXSAMXAAAASMMMMSMXAXXMMAMSXMAXXMAAMMMSAAXSMSAMASMMMAMXASXSAMMMMMMMMMMMASAMSAMMSSSXM +MSMAXMASMXMAMAXAMXAMAMXAAXMMMMMMSAMSSXXAMAAAASMSMMMMMMMMXXAMAMSMSMSMAAXSAAXSMSMSMSMMMSMMMSMXAXMXMMAAAMMMMAXXMASXMMSXSASAAAAAAAMXMXMXAXAAAAMA +SAMSSXMMXXSAMASMXMMSSMSMSMXXAXMAMAXAXMMMSMSMSMAMAMAMXXAMXMXSAMAAXMAXMMMSMSAXAXMAXAAAAAAXXAAXSMMAXXMMMXSASAMXXMMASMXAMASMSSSMSMSAMXSSMMMSSMAM +SASXMAAXMMSAMXAMAMXAXMMAAAASMSXMSSMAMSAMAMAXAMAMSSSSMXSAAXASXMMXMMMSXAAMXMMMSMSSSMSMSMSMMMSMMASMMSMSAMMAMSSXAXSAMMMMMAMMXXMAXMSASAMASAXAMXSM +SXMASAMXAASAMXMSSSMSSMMSMSMAAAAMAXXMMAMMAMXXMMMMMXMAMAMXSMASXSAXSAASMMSSXAAAXAAAAAXAXAAAMAAMXMMAAMMMAMMXMAXMMMMAMXAAMASAMMMSMASXMASAXMMAMAAX +XAMAMXXMMXSXMMMAAAAXAAAXAAMMMMMMASMMXXAMXSSMSASASASAMXSAXMMMAAMAMMXMASAMXXMSSMMMMMMAMSSMMMXSAASMMSXMXMSAMXSMMAMMMSSMMASMXMAMMXMASXMMSMSAMXSM +MSSMMASXXAMAMXMMSSMXSMMSMMSSXSXMXMAXMSXSAAXASXSASASXSAMXSMAMXMMMXSMSSMMSSXAXAMASAAMAMMAMXAAMMXMMXMXMSMMASAAMSMSAAMASMMMXSXMXMASAMXXSAMXMASAA +AMAASAXXMAXSMSXMAXXAMXXSAMXMAMMMMSSMXAAMMMMAXAMXMAMAMMSSMXAASXXMASMMXAXAMMMMMSASXSSMXXAMMMSSSSXMAXMXAAXAMMSMAASMMMAMXMSAMAMMSXMAMMMMAMSAMXXS +SMSMMXSMSAMMXSAMXMASXSAMXMAMAMAAMAAAMMSMXXMSMMMMMSMXMAXAXMXMXASMAXAASAMXSAMAXMXSXXMMMMSMMXXAXAASMSSSSSMSSXMMMMMMAMMSMAMASXMAMASAMSMSAMXMAMXX +AMMAXXAAXMASAXXMXXXXASXMASASMSSSMSSMMAMAMXAAAAXAAAAAMXSMMMSXAAMMXXXMSAMXSASXSXSXMSSSXAMAMMMMMSMMAAAXAAAXXXMAMXAXXSXAAMSAMXMAXAMXSAAMXSSSSSSM +MMSAMXMASAAMXMSMMSAMMMASASXSAAAXAMXAMXSAMXMSMMXMSSSXMAAXAMMMMMAXSASXMASMMXMMSMMAXMAMMASAMAXXAMAMMMMMSMMMMXSAMSSMXMMXXXMASXSMMSSXMMSMMMAAAAMA +XAAAXXXXSMXMAXSAAXXXXSMMXMXMMMMMSMSSMMSAMSXMAAXXAMAXMSMMXXAAASAMXMAAMASASXSASASMMMAMSMXASXSMSSSSSSMAXAMAMAMAMAAXSMMSSXSXMMMMAAAXMAXXAMAMMMMS +MMSSMMMXMXAXMSMMMSXSXSXSMMSXSASMXAXMAASAMXASMMMMASMAXAASMXSXXXXXAXSXMASMAAMASAAXASAAAMMMMMXAAAAAXXMXSAMAMASMMSSMAAAAXAASAXAMMSSXMMSMSMAMSXAA +MMMMMAMAMSMSMMAAASMSAMASAASASASAMSMSMMXMMMMMMXXSMMMMMMSMAAXXSXSSMMXMMXSXMXMAMMMSXSMSXSAMXSMSMSMMMXAAMMSAXAMAAAAASMMMSAMXXMAMXAMXSAAAMXSMMMMS +XAAAXMMAXAMAAMSMXSAMXMASMMMAMAMMXXAMXSXXAXMAAMMXMAMXSXMMMSMAMAMXSAXMXAXAXMSSMSASMXAMASASXSAAAAXXMXMASAXMSSSMMMMMXXMXSXXXXMASMAMASXMXMAMAMMSX +SSSSSSSMSASXSMXSAMAMMMXSMXMXMXMSAMMMAMMSSSSMMXSAMSMAXSMAXXMAMXMAMSSMSMSSMMAMXMASXMAMAMAAAMSMSMSMXSXMXMXAAMXXAAXMMXMAXSAMXMASXMMASMSSMASAMXAX +AAXAAAAXSXMAMXSMMSSMMAAXMAMXXAMMASXMAMXAXMASMAAXAMMMSXSMSMMMXAMMMAXMAMAAAMAMAMAMASXMXMXMSMMMMAMMAMXMASMMSSSSSMSAMXMAMAXSAMASAMMXSXAAMXSMMMSS +MSMXMMMMMMSMXSAMXAAASMSSSSSSMSAXAMXMSMMMSXAXMMMMAMAXMMMXSAMSSMSSMSSSSMSSSMMSSMSSMMASAMXXMASAMAMMXSXMAXAAAAAAAXMAMXMSSSMSXSXSXMXMMMSSMMMMXSAS +MMMMMAMAAAAXMXMSMASMMXAMXXAMXXAMSSSXXASXMMMMMAXMAXMMMXSAMXMAAAAAXXMAXAAAXXXAMXAAASAMASMMSAMAMMSMAMAMSSSMMSMSMMSMMMAMAAAXAXMSXMASAAMAXMMAMAMM +MAAAMASMMXSSMAXXMAMASMSMSMSMAMAMAAXAXXMASXXASXSMSAAXSMMSXMMSSMSSMSMAMMMMMXMAMMSSMMASAMMAMASXMXXMAXAMAAAXXMMAMMAAAXAMSMMMMSASASASMSSMMMSASMXA +XSSMMASXSAMXMAXXXAXXMAAAXAMMXSAAMXMXMMSAMXMXSAAAMMMXSASAMSAAAXAXMXMAMMXAXSMSMXMXXXMMXSXASXMMXXSSMMSSSMSMXASASMSSMSXXAMXAXAXSAMASAAMAAXXAMXSX +AMAMSASAMXSXSSSSMMSAMXMAMMMAMXXSSSMAXMASASAMXMMMMAMAMXMAAMMMSXXAMAXAMMMSAAAMSAMMMSSMMXMMSAMXAAXXXXXAXAAXMMMXSAXXMAMSAMSMSMAMXMAMMMSMMMMAMASM +XMAMSAMASASMAAAXXAAAASXXMAMASXAXAAXAMMXMMMAXXXAXMAMMXSMXMAAAXMSXSASXXMAXMMSMSXSAXAAASMMXSMMSSMMSMSMAMSMMAASXMXMAXXAMAMMXMXAAXMASAAXMASMSMAMA +SMSMMASXMAXMMMMMMMSSMMXSXMMAMMMMSMMSXSAXAMXMSSMSSSMSAAXSXXMASAAXMAMAAMSMXXMAMASMXMSMMXMAMMAMAXXAAAMAMAMXSMSMSXSXMMMMAMMASMMSXSASMXSXXAAMMMSS +MAXXSAMMMSMSXAAAAAAXAMAAMSSXXASAMXXMASASMMMAXAAXAAAMMSMXASMXMMMSMSMMMMAAXMMAMMMXAXXXMMMSMMASMMXMSMSMSMSAMAXAXMSAMASMMMSMSAMXAMXSXASMSMSMAXAM +MAMAMASAAAMXXSMSSSMSAMMSAAAMSMMMMMMMAMXSAASMSMMMSMMMMMXSMXMAMAXAAMSMSXMMSASXSMAMXXSAXAMXASASASAMXMAMAXXAMAMSMASXMASASAAXSMMMXMAMMMXAAAMMMMMM +MMSXMSSMSSXSAMMAMAXSXXXMMMMMXAAAXAAMMXAXXMMAAXMAXXXSXMAMMAMAMMXMSMSXMASASMMXAMXMMASXMSASXMASAMXSASMXXSMMMAMMAMSMMASAMMXXMXSMXSMXSSSSMSMAMSSS +MAMXXXXAMAASAMMASXMMXSXAXSSMMSSSSSSMSMMSXXMAMXMAMSAMAMAXXASMSMSMMASXXAMAMXSSMMASMAMMAMXMMMXMAMAXXMXSMMASAMXXMXMASAMMSSMSMAXMASXMXAAAXMMMMAAM +SSSMSMMMMMXMAXSASMAMAMMSXMAAAAAXMAMAMAASMSMMMXMASMASXMAMSASAAAAAMAMMSSMSMMXAXSAAMXXSSXMMASMSSMSMMSXAASAMASMMSMSAMXSAAAMMMSSMMSASMSMMXXAXMMSM +XAAAMAAXAXXMAMSAMXAMXSAMASXMMMMMMAMMMMMMAXAAXMMSXMAMXXAMXAMMMSMSMSMXAMAMMMMMMSMMXSAAXAASXMXAAMAASASMXMASXMAAAXMXSAMMSSMAAAXAMSAMAMXXXSSSXSXM +MSMMXMMXAXXMAMXAASXSSMASAMXXSSMXMSSXMXSMSSSMSMXMASMMAMSASXSSXMMAAXAMMMSMMSASAMAAAMMMMXMMASMMSMSSMAXXASMMAMMSMAXSMMSAAAMMSSXMMMMMMMMXXAAXMASX +AXAXXMSXMSMAMMXXMXXMAMMMMMSMSASXAXAMXAXAAAMAXMSMAXAMAAAASAXMAASMMMAMXAAAASAMMSMMMMAAXMASAMXAXAMAMAMSXSMXMMAMXSMXMXSMSXMAMAMSAMXSXAXAMXXAXMMS +MSMMSMAASAMAMXSSMSMSMSSXXAAXMAMMSMAMMASMMMMSMXXMAMAMMSMSMXMSMMAAMMAMXSSSMMAMAXMASXSMSAMMASMAXAMAMXXMAXMASMMSAXAMSAMXMAMMSAAXAMAMASXSAMMXMXSA +MAXAMMAMSASXSASAAMAXXXAAMSSXMAMAMAAXXXSAAMAMMMSXXAAXXMXXAXXASMMSXSASAMXAASAMSSSMSAXASXXSXMMSSSMSMSAMMMXXMAXMMMMAMAXAMXMXSMSMXMASAMAXAXSAAMSM +SSMMSSSMXAMXMMMMMMXMMMMMMAAMSAMXXMSAMXXXMMASAMAMXMXSXMASXMSMAXAAXMAMMSAMXMAMAAXMMAMAMMMMAXAMXXAAAMSASMSMSMMAAAMSMSMXSASXXXAAASXMASASMMSXSASX +AAAAAAMMMSMXMAXSAXSAMAMAMSSMSAXASXAASASXSSXSASMMMSMMMMASAMXXAMMSSMMMSXAXSXMMMMMMMMMAMAASMMSSMXMMSMXXXAAMASASMXXAAAMXMASAMSXSMSASAMXAMXXAMAMA +MMMMMSMAAAASAMXSASXMSASXMMAMXMMSAMXXMXSAAXASMMAAAAAMSMXSASAXXSAAAAAXMAAXMASMMXSAAASMSMMXAXAAASMAXXXXMSMSMAXMSSXMSMSXSAXAMMMMXSAMXSAXSAMXMAMA +SXMXAMMMSMSAAMAMXMAXSAXXXSXMAMXMAXMMMXMMMMMMMSXMXXXMAMXMAMXSMMMSSMMSSXMSMAMAAAXMMXXAMXSSXMSSMXMAMMSMMXXAXMXMASMXAMXMMMSAMXAXMMXMXMMXSAXXXAMA +AMXMAMAMXMXMSMAMAMXXXMXSXMASASXSXMAAMAXAMAAAAXASASXSXSAMAMXXAXXAAAAAXAAXXASMMMSSSSMMMAXMAMXAAXMMMAAAMAMXMXXMASMSAXXXAAMASMSSMSAMXMSAXSAMSSSM +MAMASMMSMMSAXXMSMSAMXMASASAMXSAMXAMSSMSSMSMSSMMMASAAXSXMAXSMMMMSSMMSXMMASASXMAMXAAAXSMMMMMXMMSMAMSMSMMSAAMXMXSASAMSSMXSAMXXSMAAXXSMMSAXMAAAM +SSMAXMASAAMMMMXAMXAMAMMMAMXSASASMSMAMAAXAMXAXAXMAMMMMMASMXSAAAXAXMAXXSAMXAXMMAXMMMMMAXAAAMXSAMXAMXAMAXSXSMASAMMMAMXAAMMMXAMXSSSMXAMXAMMMMSMX +AAMMMMASMMMSAMSASMSMSSSMSMMMASMMAAMXMMASMMMSSSMMMSXMAMMMMAMSMMSSSMAMASMSMSXXSSXSASMSXXSMMXAMASXSSXASAMXAAMXMAMAMMMSMMMXSMSMAMMAXMMSXMXSAAXXM +SXMXAMXMXSXMAMSAMAXXMAXXXAXMMMASXMMMSXAAXAXMAMXAAXMSMSMSMSMXMMXMSMASASAXAXMMMMASASASAXMASMASMMMMXMXMAMXXMXMASAXSSXMMSSMSAAMASMMMMXAAMASMSMSA +MASXMSSXAXXMXMMAMAMAMXMASMMMMSAMMSXAXMSXSASMSMSMMSAASAXAAAXMAMSAXSMAAMAMAMAMAMMMXMAMSAMAMSAMXAAXXXXMASXSMXMAMMAMXAAAAMAMSMSMSAASMAXSMASXMAMS +MXMAMAMMMMMMSSSSMASXMMSMSAMAAMASAMMXSXMAMAXAAAXAAMMMSXMMMMSAAAMXMASMSMSSSSSMMSSMXMXMMXMAMXMASMSSSMXMASMAMAMASAMXSXMMSMSMMXSASXMSSSXXMASMMAMX +MSMSMASMXAASAAAXSASAMASXSAMMXSAMASMXSAMAMMMMMSMAMXAMXXMXMAMMMXSAAASXXAXSAAMAMAAMMSAXSMMSXMAXAXXAMXAMAXMASXSASXSMMXXXXAMASAMMMXMXAMASMXSXSSMM +AAAMSXMXSMMXMMMMMSSXMASXMAMXMMMMMMMAMASXMMMSMMMAXSMSAMXAMASXSASXMAXXMMMXMASAMSXMAMAXXAAXXSSMSSMSMXXMAXXAMXMASMMAXXMMMAMAMMMMSAMMXMSMAXMASASX +SMMMAMXMMSSSMMSXMAMAMSSXMSMMMAMAMAMXSXMMASXAAAXXMAMMASMMSXSAMXSAMXSSMMAXXMXAXAAMMSSMSMMSXSAAMAAAAXMSMSMXSAMMSASXMMSASAMSSMSASMSAMSASXMXXSAMX +MMMSXAMMAAMAAMMMMASXMMMXAAMAMSMMMASAXMASAMSSXMXAXMXSAMXXSAMXMXXXMAMAAXASMSSSMMMSMAMMXAAMXSMMMMSMSMAAAXASXXSASMMXSAXMXAMXAAMASXMAXSAMMMXXMXMM +SAMXASAMMSSSMMAASMSMAAAXSAMMMXAMSMMMSSMMAMAXXMASMMAMASMMMMSAMXSMSSSSMMASAAAAXAAMMAMMSSMSMXAAXMAXAAMASMMMMMMASMSAMMSSSSMSMMMASAMSMMSMAAMSMAMA +SAMSMMXSAXMMXMSXSAMXSMAMXMXMAMMMAMAAMAXSXMASMXMAAMASAMMAASXMMXMAAAAAXXAMMMMMSMSSMMMMMXAAMXSMSSSXSSXXXXXAMSMSMMMXSASXAAAXAXMASAMXMAMSSMAASAMS +MMMSAAXMXSAMSMMXMMMAMMXSASXMASXSAXMSSXMSAMXMMAXSXMXXMAXSXSAXSAMXMSSMMMSSMXAXSAMAASXSSMSMSAXAXAAXXAXSAMXSMAXMMSAMMXSMSMMMMSMAXMMAMAXXXMSXSMSX +MAMMMMSAAMAMSASXMXMSMSASAMASASMXMASXMASMMMAAMAMXMSMXXSXMASAMSXSAAAAAXXMAMMAMMAMSMMAXAAAAMMSAMMMMMAMMAMAXXMXSAMAMSAMXMXSXAAMMSMSSSMSAXMAMXMAM +SMSMSASMSMMAMAMASAMMAMASMXXMASAMXMXAMXSAAMSSSMSAXAAXAXAMXMSXXASMSSSMSASAMSSMSXMXMMMMXMMAMAMAMXMAMMMSAMXSAXXMASAMMAMMSASMMXSXAMAMAAMMMMMMSMAX +AXAAMASAAMXAMAMMMASMAMXMAMSMMMMSSMSSMXMMMXMAAAXMMMSMMSAMXAXMMAXXAXMASAMAXAAMXXMMSAXMSMXMMMXSXMXXXMAXAMAMMMMXMMXXSSMAMASXAAXMMMASMMMMMAAASXMX +MMMSMAMXMASXSMSASXMXSMAMSXMAAMXAAXAASXXXMSMMMMMSAMXXAAAXMSAXMXMXSMMMMXMMMSSMSMSASXXMASAMASMMASMSSMMXSMASXXSAXASXAAMAMSMMMXMAASXSAXXAAMMMSASM +AAAAMXXAXMXAAASASXMAXMXSAAXSMMMSSMSAXSAMXAAMXMAMAXAMMMMXAMMXMASAMXASAMXMAXMXAAMXSMMMAMMMAXASAMAAAASAMXMMAAXAMXMMMMMAMAAAAXMSMSASXMSXSSSXSAMS +SSSXSXSMSMMMMMMXMMMMMMXMMSMAAXAMXXMASASMSXSMAMSSSMMSMSMMAXAAXAMMSXXXAMMXSXMSMSMXXAAMXSXMASMMMMXMSAMXSXSMMMMSMMMAXXSSSMSSSXAAAMAMAMXMMXMAMAMA +XAAMXMAMAMAXXXMAMAMMAMXAAXXSMMSSMXMXMAXXAAXMASMAMAXAAAXMASMMSMMMSASMXMASMAMXXAMSMMMSAAMSXMMAXAMXAMXAMXXXXAAAAASMSXSXAAAAAMMMSMSXXMAMXAMMMSMM +MXMMSAXSASAMXSSMSMXSASAMXXXMAXMMMASAMAMMMSMAXXMASXSMMXXXMAXXAMXAXXMAXMSASAMXSXXAAAAAMMMSASMSMMSAMXSAMXSMSMSSSMSASMSSMMMMMXXSAMXMMXSSSXSAAAAX +XMXMAXMMASMSAAAAAXXMASXMASMSSMSAMMSXSASMMMMMMXMXSMXAMSMMXAXSXSMSSSSSMMXMSMSXSMSSSMSSXSASAMAMSMXAXMAAXAAXXXMAMMMXMAXXXAXMAMSASMMSAAMAMXSMMXMM +XMAXMXSMMMAMMSMSMXXMXSAMXAMAAASASAMXSMMMAAAMMXMAMAMAMAAXMXASAXAMAXAAMXSAMASASAAMAMXXAAXMAMAMMSSSMASMMSMMSMMMXMASMSMXMASMAMMAMXAMMSMAMASXSSSS +XXMMSAAASMXMAXMAXMXSMSMMMXMMMXMXAMAAXAASMSMMXAMASASXSMXSAMAMMMSMMMSMMXMAXXMAMXXXSMSMMMMSXMXSMAMXMMAXAAAMMAMMAMSMMMMMMAMMMMMAMMSMMXXAMXMAXAAA +SXSAMXSAMXAMMXSASMMMAXXXSMSXXXAMMAMMSMMSAXMASXSMXAXAMAAXXMXAXAXAMXMASMXSMAMXMMXSMMSAAXAXASXMMASAMASMSMSMSAMMASAAASAAMSSXMASASAXAAXSXSAMSMMMM +SMMASAMAMXXXAXMAMAAMSMMMMASAMSAMXXSAMMAMXMMASAAMMSMMMMMSXMSMMMMMMAXSXMAMMSMSMSXAAASXMMXSXMAASMSXSAMMAMMMSMSSXSXSMSXMXAAASASASMSMMMMXMASAAXAX +MASAMXSXXXMMSSXASMMMAXAMMAMAXXMXXXMAXXMSMSMASMSMXMASXMXSAMAMASAMXSMMAMASAMASAMSSMMXAXSASASXMSAMXMASMAMXASAMXAMAMMSXSMMSMMASXMXSAMMSASMMMSMSA +MMMASXSASMAMAMXMAMMSMSXSMSSXMASXMSMSMMXAAXMASAXAAASMASAMASXMASASMMASAMASAMAMAMAXXXSMMMAXAMMXMAMXMMMMMSMMMMMMMMAMAXAMMAMMMAXXSXXAMAAMASAXXAAX +SMSMMMMAMMAMXMAXAXXAXAXSAMXASAMAAAAAMAXMSMSXMMMXXMAXAMASXMXXASXMASAMASASAMXSAMSSMXSXAMAMSMMASAMSMASXMAXXAMASXMSMSMAMMAMXMMSAMMSSMMSXMXXMASAM +AXAAAXMAMSMSSSMSAMSAMXSMAMSMMMSMSMSXSMMXMAMMAAAXSSSMMSXMAAXMXMAXMMXSXMXSAXASAMXAMASMMMMSMASAMAXAXXSASMXMASASMAMAASXMMASAAAMAMMAMAAAMXSAMXMXA +MSSSMSXMMSMAMAMMMMMMXSAXAMAMAXXXXAXXAASAMAMXSMSXMAXAAXMSMMMSMMXMSMMSMSXMMSMXXXXAMAMMXAXAMMMSSMSSSMMAMAASXMASMAMMMMSXXMAXMXXAXMASAMMAASXMSMMS +XXAMASXMASMSMXMASXSAMSASXSXSXSXSMMSXMAMAXMMXMAMAMAMMMMMXMAAMAMAMXAAXAMASAAXSXSMMMXSASMSMSMAXMXAAAXMAMXMAAMXMMSXSAMXSMMMXMASAMMAMAAXMAMAXASAM +XMMMAMXMXSAXXAMXSAMSXMMMXAMXXMXSAAAXXASXMASMSASAMASXSXMASMXSAMASXSMMMMAMXMXMAMXSAMXAAAAXAMSSSMMXMMMXXAXXSMSAXAASMMAMXAMXXXAAMMMSAMXSMSMSAMXS +SMXMASASXMAMSASAMAMMSMSXXSMXASAMMMSSXMAXSMAAMAXXMXSAMMSMSAXSXSASXAAASMSSSMSMXMAMAMXMMSMMMXXAMXXAAMSSSMSXMAMXMMXMAMASMMMMAAMMMXMAMMXSAAXXXAMA +XMASASMMAMXMMXMASMMAAMXMAXAMXMMXSXAXMXAXSXMMMSMMSAMAMXAAMMMMXMASMMMSAXMAMAAXSMXMSMSMXXMASMMAMASXSMAXXAMMMAMMXXAMXMMSAXSAMXXXSXMASXAMSMSMMMXS +SXMXASXSAMMAXAXMXXMSMSAAXMAXSASAXMAMMMSSMXXXAAAXMAMMMSMSMSAMMAAXASMXMXMAMMMMXAAAAAXMASXSMASMMXSMAMMSMMMASASMMSXSASASMMAAXXSAMASAMMMMMMAAMSAX +XASMMMASMSASXSSXSAMAASASXMAMMAMMSSMMSAMAMMMMMSMMMMMAAXAMMSASAMXSMMAAXMMMSAAMSSMSMSMMAMMMMAMXMAXXASXSAXSASMSAMAXSAMXMXSSMMXSAXAMASMXAMXSSMMAM +SAMAASXSAAXMAMAXSAMMXMAXAMSMMXMXAAMAMMSASAAAAMASASXMMXXMASAMXMXSXMSSMAXAMMSMAXMXMAAMASASASXMXSXSXSAMXMMAMMSAMMMMXMSXAMASMASXMXSMXXMSSMAAXMAM +MMMAMSAMXSMMAMSMSMMMMMMMMMMAXMSMSSMASMSAMMSMXSAMMXAAASMMMMMMASMMAMAMXSMMSAMXMMSAMMSMMSASAXXAMMAMAMAMMSMSMAXMMMAXAXAMXSAXMAXSMXAMAXAAAMSSMSAS +SASXSMAMAMMSSSMASAMXAAMXSASMMAXXMAMXMAMXMAMAAMAXXSSMMAMAMXXSAMASXMASXXAXMASXXASASAXXAMXMXMXSAXAMAMXMXAAAXSMSSSMSMSMMXMASMXMAXMAMXMSMMMXMASXS +AXASXMAMAXMAMAMAMMMSSMSAMXMXAXSMSSMMSXMAXMMMMSMMAAAXXASAXSAMAXMMSMSMAMMMSMMXMASAMAXMXSAMMXMMMSMSMXAMXMMMMMAXAAXAAAAXAAXMASMMASMMXMAAXMAMXMXM +MXMSXSXMAMMXSSMMSAMXAAMASMSMSXSASMSAAAAMMSXMXAMMSMMSSMXMSMAMAMMAMXAAMXAAAMMXMAXXAMXSAMAXXAMAASMAMSASXSASAMSMMMSMSMSMMMMMAMMXAAXMXSAMMXAMAAAA +XSXSASAMMXSAAAAXSMXXXMSSMAAAXMMSMAAMMSXMAMAMMMXMAAXAASXSAMAMMSMASMXSMMSSSXMAMMSSMMXSASAMXXXASXXAXXXMASASMXMASAXXMAAAXXAMXSSMSSMSAXXMMSASXSMS +XMAMAMAMAAMMSMMMSASMSMSXMSMMMAXXMXMXXXXMASAMXAASMMMSMMXMAMXMAXMXMMSAAXMAXAXSSMAAAMMSXMASMXSMMMMSSMSMMMMMXAAXAXSAMSSXMMSXMMAAXXAMASMMXAXXAAXA +XMASASAMMXSAAAAAXAAAAXMAMAASMSMMMMXSMMASAXMSMSXSAMXMXMAMXMSMSSSMAXASXMMMMXMMAMSSMMAXMXAMMAAAMXAAAXAAXMASXSSMMSMMMAAXSXAMAXMMMMSMAMAASXMXMMSM +MSXSAMMXSAMMSSMMMMMSMXXMMSXMAXMASAAAAMMMSSMXMASMXMASAMASAAXAAAMSMXMAMXMASMMSAMXXAMXSAXSAMXMXMMMSXSMSMMMAAAAAXXAAMMSMSAMXXAXAXAAMSSSMSAMXAAXX +AXAMAMSAMMSAMXMMSMMAMSSSMXXMXMSSMMMSSMAAMXMMMXMSAMASASASMSMMMSMSSSXAMSXMMAAMMMMSXMASXMXAAMXXXMAMMXAMAAXMMSMMMMSMXAMAXSMAAXSSXMXSMXXASAMSAMSA +SMMMMXMASAXMSASAAASXSXAAASXMXMXMXAXMXXMSMAMASAASXSMSAMMMMMMAMMAMASAMXSAXSSMSXAXSXMMSASXSMMXMASAMXMXXAMXXAMMAXXMMSMMSMAMXSAAAASXMMAMMMAMXASXM +AXMAMASMMMSMSAMMSMMMMMMMMMAMAXAMMSSMAMMAXMSAXMMMXXAMMMXAAASMSMAMMXXMAMAMAXAMMSSMASASMMXAASMMMSAAXAAXSMMMXSXSXSAAAXMASMXAXMMMMMAAMXMASXMSXMAM +SXMASAXAAXAAMAMAMXMASMMSXSAMXMAXAAAMSMSMSXMMXSAASMXMMMSSSMSAAXXMXXSMSSMAMMSMAXAXXMASXMSXMMAAAXMMMSMMXAXSXMMMAXMXSMSASXMMXAMMAXMMMXSXMMMMXXAM +MASASXSSMSSSSSMASASXMAAXASAMMSSMMSSMAMAASMMAAMMSMSAXAXMAXAMXMMSSSMXAMAAXMAAXXSAMXMMMAMASMSSMSSMXAASAMSMMASAMSMSAMMMSSMASXMMSSSMMSAMAXMASMSSS +SAMMSAMAAXAAAXMASMMMSMMMMSAMAAAAXMAMSSMMMAMMSSXMASXSXSMXMXMAXAAAASMXMASMMSSSXMXMASASXMAMXAAAAXAMSSSSXXASAMMXMAMXSMMAXAMSAAAAXAMAMASMMSAXMAAM +MMSAMXSMMMMMMMAMSMXMASAMXSXMMSSMSAXMXXXXSXMMMAMMXMMAMXMAMXSXSMMSMMXAMXMAXAMXMXXSXMASXMXMMSMMMMSAMXMASXXMSSXSMSMMMMMMSSXSMMMSSXMASXMAXMXSMMMM diff --git a/2024/4/sample.txt b/2024/4/sample.txt new file mode 100644 index 0000000..1f4eda2 --- /dev/null +++ b/2024/4/sample.txt @@ -0,0 +1,10 @@ +MMMSXXMASM +MSAMXMSMSA +AMXSXMAAMM +MSAMASMSMX +XMASAMXAMM +XXAMMXXAMA +SMSMSASXSS +SAXAMASAAA +MAMMMXMMMM +MXMXAXMASX