diff --git a/2023/.inputs/01 b/2023/.inputs/01 new file mode 100644 index 0000000..143e7a3 --- /dev/null +++ b/2023/.inputs/01 @@ -0,0 +1,1000 @@ +kjrqmzv9mmtxhgvsevenhvq7 +four2tszbgmxpbvninebxns6nineqbqzgjpmpqr +rkzlnmzgnk91zckqprrptnthreefourtwo +fouronevzkbnzm6seven47 +zphgdcznqsm2 +4gjnmxtrbflgp71 +4sqvv1cnpn +8sevengzfvjrhnsb6ddb8ninerkgkxthtfkvbcmqs +1seven336 +86one34vvvgdngbt39 +37qdmsqzsq72clfntfxqfrhbxtmfourzcjxfmmfz +3rxgts +skhcdbnrninethree5 +qtkhfdsixnine3bvpcpmjbzjonefivethree3 +seven4six51zlrvqmbgpzplxtk6ptcr +eightczxhbntwo9sl83 +42m1ndvqkz16seven +three9oneeightmqbtwo +vt81pzcchsvz +eight6349jr +8czmcdhjzpsbpjgngdvtxczgsl6th36 +gbddhhhhkgjltwothree57 +pjjlddnvtwo884 +eight5fbcxqlqkplm +cdzgbtxbzl43vvnx +onefxtprsml8fqptvmfthreesix2jbeightwor +nine8twolrpzp +eightvjdzfmqlvceightnine6rlpzkdmk +8tqmjgpfzrnineeightpcfltmzn8 +9nnnh +49onefour7fivezchhjrpbmteightwokrs +7zqhjkjkmm7448 +ninebndfdjbxx9sixltsjbsbgone45kpcln +zhqkrndh5 +p61five44cvgxlgkdseven +8two4kpdxdf +two773t1rcdvxldjrjjq +lnqhgfivebdhpshzfiveonefivejsqzzdxq7 +72vlqqdtwo4xdzlreight7 +27zpq4one +xczj475 +2two3seven9rshkhrjzlv2 +onethree222 +fgeight6threegkjcgzjsfxqksgqvhnrhqf +sixsix8twotwoone +five3qr3two +76zxcjmfq +xchtklzgtwo4lbvnsix +cffmlvmsvnlrtgkstmqsdone9mdlkdgpgeightwogd +3onethree +lrdtfive3six +foursixsixntwoeightthree9zmcmxdn +threefmqjzhzdseight8dfkbstnineeighttlzhjrrgcl7 +7msqnfdbbseventwofivesixrrqgsvxn3 +64dlmxn +3two7vrv2rlqc4nine +rmxqpktrxsixsix634 +tjlrqkj1 +dthree2qhhnbeight5two +zjvvmskpnclgnfnjqr7 +two425zfiveeightjmhznf +113njjz +pdchljrdrlntkdn1pc8 +5twom9hpmbggpeightjnddsfbfpsslvvt +one52ctrkkc +dnbtwovcvxggsbsix219 +fivetjmg5sevenjp +131 +8two9khfl +threethreetcghqbv3rbnsdsk4sevennine +stlttkxrsninetwolftchdtcrpfivelmsmgcdpprqx1qh +sptb46rtrzhcmbf3seven7 +six6tntbjjtsdnczlnbeightlsfplsqq6 +33bldlptj2twosevenxk +five8snvmzqcksix7 +vx49six +three7sixfourfxfcljfdhfl6fgktbsxxrrp +4csxnkvmdnfive2rkkppdqln +dpxhgssggqoneqsvp9eightjvgjrjbd9eight +five6xrrzpdp8five44hqxqbnhxslrjfh +fkpcdb2sltktfghhmxdtxxffssxztjngkthree4 +ndhcxeightthree3 +qrrslbfxklbxnine99lcdtpbf +mvmcg5three +g9one +2ninegdsix3kb9ninerssqbpxgs +blfclcvsh8seventwo8fourznjjssvtlg +ppjdvrxb6eight37cnqmgl9dghbrgrnine +nine6zzcvprthreefive +8fourshkcchfb4sixlv +9tpqqs3qxvqhqmb2 +fljrhvnr722threetpghbftdt +2five2bhhq +18jhhzczcncjnjjx +jgvzzrklz8svzfcgzgggseven +8rdjdvmvcheightrvkpcmjnshhltgghf41 +9three4cffsxc5vhcvdcqtv +86tghvbgthreebkrgf6one +331s2twonep +rtvz4bsdzqeightwodth +3vggdskpcdjfivezpjgrfsqone4z85 +xsftxsrk6threeconesevenncvs8nine +3two2xjrqhrzjv +smdmb1gnlbvkq5nrmqmc +qmmpthreenine7sixczhlfttvphzkbqnm +2rmsrzrbgfjrones +81bmfddsmngkqpq5zsnrcnhqt +two1lzf4two +4sixonetwobzvll +eightpggvssixfivelpm4three1hz +77nine3ninefive7 +oneninerhplrfsxlltwonineszhdqskt9 +lxvtzvjzrreight931 +38z +zfxtdnbqtwoseven1grtpbonenk +fivesixkbzcbvcn76pdclljqsix18 +mrxtfour5vkkmshbmpx2fourtwocpdzkmspqxqrvf +8sevenfiveqvbsnine +onetcdfdtnsthree21four +3zqcbvdftwotttfdvtmtxvhrsixtwo +lqmxvcplqs8bhsixb97 +bmvxz27sixtwocvhtmqlls73 +five1lvzzbv +5oneqdcztvjsqmjf6 +61hjj4onetqlgkllr +sixthree9five +8sevenjqgvlfoureightqnghxptsmc6xmrrnzd +ftjbhzkmvtwooneninenine9sevenqgb +onesixtworksmtc3 +3oner65 +3trmpzmc622 +seven14 +xfgbmsixeight6twocsevenzx6 +3xfdpbpnzzkdrbmrdjrtsrvx37 +nflclprfgnt7 +fiventkj8three4twolkrztseven +19tbgcfourseven +9onefour54seven +hkmfqcnpncfzgrplqq9xqklcb +ninemxhkpspbqn69zmlsbtsevensixfive4 +zvfmhfjflscnqskzgnz74jlxrzm3 +fiveeightvdqtlcfzzrpfd7eightwosn +2nineone7fourninethreeeightsix +ppzf4five9threeseven +six1kzczzlssp84three +885dlzlnnfth1xthreetfm +vqmntfbqgt6four57six5 +mqgmbp3 +threesix3one33seven +46sixptwoone1vnnqlmrr +vvmcjdbjbthreeljznqhh5ztwodj8eight +rxhxx6ninesixeightrxffqrgdqx +ninefive2twoccpxbfcfkzpzhsf243 +fourmvxpxsglhthreeone4jlgsfvxhmmjt1eight +9crfpmnine19four6vkbsdfqn +6ninekxjcfxfthreejpfmtjjbeightone +xknxrr6threeglmjzxpvxmfivethreezn +7five737 +1qstxdtctlk94gtnqvfxmbjtnlkconetlkdmqgrxz +6mgqtjq +4pt +eightjkdl54one5eighttwofour +ttjblsrrl2three +mtwone8onethreecprdhtdgxvdqcptplmsixtwo +tqlkbkjrclseven9lprrcpnxv5zs +seven94mgljdpp8fourfour +htxchhjv6fivethree +gprqsxbnlpls2two +7cjtrglplbm7pdbvjtnineonerqnkt8 +8onezjrxcsfjfoursz2seven +mcrpvnlsix8fourdblmxkhcsx +413zsixhbsxqsplhz +fxqthree99 +onenine46twotwoeight5three +2559nhlsgmknq +sevenonexzxgxkhvln1v +68 +7dcbpcxrm87crhzlmfgk58 +36one81foursevenfourpcnjgf +eightxlbgssonerjfone7ztfftmn2one +eightzkvcbzmceight5four +four79ninefive9sixh5 +2lmggjph5eight +ninetwojhzxf5kpfp +7xvnbfbzpspbfxlpsfrzteightqtvdxnlkp2seven8 +lgblvsjdrnjqfgxlfqh37852six +jtrnmqseven6bqbsdvtzd8ppzmnfmdhkrd +seven5seven676fivelctxb +mctbkczczspvhjfhfivesix3gtnqgkjzc3 +psnhmjsix9 +four4nlrhxflrrtxsixeightwosk +npkxv1grrrrbcsbq67538 +35thrcjrkrdptwo +klsnbcjfpdsrfnsclvnfczjfsixqpdhmmfmcqfive4bmtpctone +zxkncsrktnrv74eighttwonine +jdmfscrdlbj2brseighteight +8ktjrzprt8khpvszbtn +547jrxkhmheightfour +fivetwobpjrjczflhljvdlhl9fivernglhclznzfq +threenzlvrgjonenjbqnlfxhmfourone4mdnld +6jbzzxsix9ninefivebdjmgnzcqqckkl +gone6sevencdmrdbrgh +cssoneighthmmxvqvbfflkjsixone361 +5onekpsevendcrzcgcs7hfvffksqr11 +mfxjbzn9 +6nine4 +cbljjfthree42sixkss5b +36pvqf2cmvvzzdfour8 +ntwone84three +twothree745seven4rsdlbtkoneightrbj +sixfivexfzfjhnzpfv8vz +four8five +bpqrcnj3 +45przmdflrrd +zcbpzhzq2nvjsk +xbrdcttltxnhdfgh33fivepthree +seven5six +3three21tlfxhmlkqx9 +sixkdxjtskknd1nrgbqxjsixbznjqhpfz2 +eighthsfnljrpvqnzpkninebbbjfcshfq5one +nzqbqklqlsixseven56twoonethreeone +nfsixeight5jflseveneight3 +sevensevenp63twoonevxlsgmcfvk +fourgncfdfoursix5mnlhvvml +sixseven66hrqjbkvfrjkmbg +339lnhgjzxbdmfh +pvdnppdt3bxxqvdc +sixmqrcvtzdtsb4 +two9xtsv5 +fourdvt1 +two2cbpqfgszpgbkrrbbnjzh1sixfourtqkns +sevennine6451oneninefourtwonenn +vbxrslkfour7four4qsmlhqvm3 +foureightc3kjvmgtc6eightseven +oneone8bcpmdfcszz4kmrfrd +sixcqpbffcsctccd281sevensixeight +6kxbhq5mnvt9cpbcpzslg77 +cpjfplxvpzqfng4four516three +3eightlnqzzsfhmndftc72 +six2xsdhxgdlfnonenine46sevenseven +qdpdrkrt754 +5twosevenninerg6ninefcvgdtk +six31twox8sevenfourone +8eighthplftwo +41ninejdcvrlplk +9hlnjcjjgdrhvmpvbmdzcmmzjtj2six +3vpvdeighttwo +4sznqlshqmninefourseven +eightthreeseven7 +sevenfourzsfjplg1sevenfour +34zbrvfjqckr8cknzsmpqc1seven7seven +21shklthree59two +7fivefive1gdtf8 +8gzfnxsp6hlpr +nineznbgntvcqjtft24threerkp1jlrdjhlg +3414zzrxbgdvmp +fbjzjffour3lxzmck9 +lsccprmgh1 +33two6ppjhfkcxpthreejm +sixsevenseven33 +3rphhpfdbh1cbmonetwo7five +8hqmcqxcj6two1eighthbkcvvvt +63fourrtfztfvonesevenseven1 +d9ggdsxgnxvdlqhclgstn7 +5fourskvdvntzgmrmsgxqzd +11onenine4eightsix +three4sixkrgfour9fourtwol +8seven2pthreetjxzhrzvxrrfpdfnxsdbshrtnqgmzxsg +twonzbbtjkvtbcxrtszxmdtffkdndzqdfffxckznine5 +two5rljthree64n8seven +fourninetwopnhzzrdmng4 +7vfivemlqgctmzrk +85d7onefour1 +9nine6xddqgvth3six6 +fjszdfnmg7one +m2 +threenqglsjplgbpsixfour7fourninefive +4bszvrqdvninesix6seveneightmfrgnxftkvchk +xnstcjndqzthvczfninendvksmmzzxsjt5 +413f9sevenninesix +21mthreethree +fourmpsgpone6txh376eightwods +onetwo1ninefourfive4twohbb +7hpxlcsh7 +cqtwoneonelgjmxxjkv8 +6threetwotwo93nn +1fmbdzfkkcg +4mqfpxjhmmzfive9sixsevenhckjrrzxqcxnfppjchrh +55xcxtfour +gbpcvzsklsix7eight +83seventwoseven7ninetwo7 +hdstztbpg8twofbtfeightninemzgrx +78kzbqq3686bsnmvnchts5 +689113fbgjtjd +nine1threesevenninefour +6sevenfxrhbxktxfive +3lhpktqh89two4bpheight +85three1dgvtjtg6cdtkhccnhhjfbsxdc +ninebvvhmlkrkllhjsl4five1 +four7pvbvqjxsnfh +882qtlk +8onetk7eight8four4 +cpkjmtpone68twojcmjbfsj7sixtwo +nineslzthree8fqtfckjdkl3 +6five9pkl +1nine48dlxscmvsvpxtcsqhpfxn2 +22fourthree +8dstsdqpffkfivegqmrvqr +6rbdxrvxhsix44 +34three +dnkmhlzq4seven9 +5twohpxxfive8eight +5eightz +jmmzbfk8ltkksfbbskcdrrgfnz21 +eight1zqzr92two56 +bvvmeight4twofour +147gfslhl +dmfz59qsqmxngqxdlbhcxrqbonesix +nine8eight +3ttzjhjdcqk +62nine64ninebktrj15 +mkdfdzxkbfctv47 +vvhsvgjhhonenl7mrhdskxfrr +oneeightgqtp7fiverkvqjtsdeight1nine +eightonethree416gbqgnf +seven144 +twoeightpprtlffourfive5jfjdvcvkd8 +jppmcvlzrg96 +8eightonesevenzcvknjfvdkhrrzfmeight9 +cm97three2 +eightzptfnlgpfive6prrgtjone7vbnfml +threethree1ljbsfqcrsix +njnpsxlfivenine28two +95dneightsevenxdtzbk86 +eightm399lthreeoneqbjjjtwonef +2kzxgfmcseven6qv7eight +bkrkfdfqbbcl84sevenfourpjf +552 +lmccgmxbzfour16zlbrrcgpln +nine7ngkjczfv7ktmvvgqb +qcqtseventwolg8 +foursrbl91rsvtlbqdn6five +sixhvszbkncglchflsevenoneone4fivenmrcgkkvpk +1threetwofive4fiveeight +seven8ghsqbmfzvpzbvvrtmxnhf +4sixfive +3six3sixfourseven5 +hsbprzpjfhflrggjdpdsn23five +zzjqrc7 +737rmjmftkrdkvgs6five +sevenseven81 +four69hdsevensix +jjgqr5pqtwo3one5cgkftvz +seven3threeseven1n6 +7ninenxktnbfiveeighthqmfdlkb +cgrztlh4gsdfjqzqvr2znxzkrjrkmd2eight1 +87eightfourdjbbjkpfpqrqmtfdhjrrfive +qqbglmxcsix8vftfivefvpfivevzvtz +fourpcksixjslx26six7 +mfgleightc15frgtvxdnfour37 +67qbqpsgfcfgsccdt4 +cfpjlxh16 +21sixslgcrgc3two +kmgfivextrdeightnine8sl +6eight62fivekj2clfk3 +fivetwo5three6 +9rzdrhvf4 +62fivetsceightfive6 +847gnmgjjksvdbkklpqsbfbzsffmm +cdtbhbfvgkkh7vhbcqkbjkkcrkhxfive +7onethree3pnsfbhqsgpkgvncs26 +2jkfqkc +sevensixztcfmt88 +nineeightxsfivekfv5 +5one5 +48jjvh4rprbgqzpgr +23six +vztbppbsevenfive88gpmgjkq +2hpnxbssr +2jkgvrsevenntvzdkjzsmnjtcllttbxrnddmjceight +snn2cmvphzbbjlphrdkpqnqssixtwo +threeeightrbeightsevenkcfpn5qjmjbtc +l4four +2two1 +two6zmzvkx5nine +sccjntwo9 +6twothree9nineq +nine749sevensmvggvmfxghvmp5 +4six7sixeight9 +3seventwoxjmh76gllshjm6 +threesevenxkftjzmpc6 +rs4onefhnzkt +6dprgnfhhfhnglddzksbk922 +oneninejgcmvkkhxtsrmgqvninerpqmlmm89 +cdvvddhxc1dtrzjl7nine9rxxkgb +71chdqhbzps8sj +nkqpjmvjkzeightfourthree9sevenfqffcpbdsfks +kjtzdpxnmcvcsixbzcvdnzhnbkn7 +3xnvkmxqhgnzfour5 +4sevenxftdgseven94phsgkflqbpgjs +98jhbgtdlrmjonesix +86625three2one +onefoursixone8bphb6 +eighthkzfnllhk3onethreezfttbtqljd8 +peightcfdlhk9dvdtmbqgcone +ninefqtnjkqvrfbj8nine5 +5vtsntrvfivelpfln3kpkskrbrhbnhrncthree +nine6rpdsrkhzrqthreegkdlhxvzvfzmfive4krbdxjxtjr +eightseven3nine8threethree +sixdvqlt5zp3threemszxfdfiveone +hrtwovfive8ssfmbfsztwodthdlrxtjfive +qmlzrzfj2ccvztbn314 +xvcgcljm6seven6 +two7787fivesnine1 +twodlhhsqseven8twosevenfour9 +gktrrqrffg6sixkpbtldbzj35seven14 +8fivexnxsseven6hjdbbhxlt +cfzmmoneninefour4 +823eighteighthsonenzt +4four6eightkdqljeightthree +5jdpdgml22four +6threefive7eightlzdlcxfvthgrlm7mjkmx +6pldrbjfceightbnktrtqgtrxbt +b5seventhreexl +194zgeight54 +7threethreez1sixthreetwonemr +zcnltvvhjr5vvdvkbnn2 +frcdgbkjmqqzshjkfsixzxkgvmfrkfxqjpbgn5zgsn +sixonenine6 +twotwoninenine6ttxh +nine4three32 +four9three6bgbsqq +seventrseven1three7jxsmnrnlgdf +2sfflb +twohfcr5one +fivetwohgrqtbhx619twonedv +9lcsvtveightninerfxkxvzgpl +sixeight6sixfivethreeoneqj +dfourktxv2msshb8seven12 +sgljk4 +mjgk11eightrlbqpdl +jfdrflpxh489bkjtlj +pftppcr85three +onefivemfsfk3five +5x7twoseven +cqkz8sevenfiveninefnbrht2nine +ninehhm2three986foureight +63ljkvtrtwo9g +dqfour95fiveseven6 +8twozthreetwofive +six91fhzjs +1slknxtrv +psxvkdcsdldxjninejfzblssv5z +bczst26r +btoneight79fninejvhvdccnhtwo +onejcnlqmnhjeight34z5 +clbqcdmzc4mjlxgfournineddtlj6 +1pqqphfgqv5nine +five2tvzshsixfive +8ninedhvzbsvcqgone +bqlgonesix7 +75bltzpqpntwosixtwo +onefxlvlqseven47twoslgffq +nsrnltmf4 +mgshfseven33 +2p24 +jklglqrone3qmjbdgpgzmznd +eight23fkgb2 +187two +vlvncjgmqtwo5771sixftz +lzr9 +chrshzthree5641nine +rnnqlfgfmpscnmgjqvq84 +gzltjddjpb937 +ninethree5 +fouronehvmmfrcgjcnmgcgkjnctnvvqftmdgzds89 +6xjone244 +ninefour8four +49threeq95five +gpeightwothree8lsjgjfourninehseven5 +2kfmzscsvssseveneightsevennine7bfct6 +cbmtfpvsevenvsbbcpkzlqlgsixfghzrnn28 +eightpslnsnnonemqxmmhch42six +2one42bgllqb2 +rjshlfvkkgqzsnttwo3vfourgkplcs +eight96 +16qng4fiveseventhreenine +bldtndftseven9qhhxgmgxd2 +219ninebklfrvppfmzrjnv9g +jvzdghjjv298zkssjc714 +1eighteight +onejkzeight7seven +37five4 +zxqrfpr7lnsqmcrtxkpvxkzjgdsmncvqhvrmnvqzkl +1dxfivepqbvrp3 +krpjpfxbrstwosixkr3dceightwoj +5nineeightjbfzclpdjone2threebddbpxrcjf +rqlfljnktwo57 +tsleightwocdzzmgpxsix4seven +xdvrspvzbx2 +jlbvjskhsnttvzdlhsveightthree9 +5one7jlsnzbbbzxkvrtd +foureight6rpsrtrrzcnvtc8mdqzdxnrsqtcxkskd +gtdxgdj2jlhfltkbmq45zhqcqmzbfninenrvvqcj +seventwoeightonebkcbxqpdhn42 +rrqchvstrmfive3mzmvcrprssbvthrg1twotwo +414nmdkhgfive7seven1llbpxdv +eightfivecflctsdvs262nineseven +sixfive71sthtxdgbbtntqpqnltmf83 +kboneighttwordldqjvvkh4ctntmtvsv +jxmdndmtxhqndfptmnine8three3 +cvmqjmbsm2c3onecvftwofourtwo +one7fkckcjknb2l +onefnbtgpqkghcxlgthreevvlxp94jdrgfvpmf +eightjxktztgfgpnine1threexgfklt +six1llzdnkvn4twotwo +7mfnnptwosix2five +qgzftjcdgs45fivezzvrtjonep +boneightnxggjksdcg8 +2three7mfqvtzlk +fxg8gsffbl84pjvk +sixpj5 +4qbvpfqrnplq2snsfive1hnmkxgszqdseven +9sixcjnqgxtzh4 +2sxmbjxfive2 +9kqcndbqfvs +kvrhxlsbqh7fivethreemmflkfq +khonesix28 +nineeightvhncnbtbp68fone +8eightnine +four71eight +nnvonethreepktq8threed +x373one +flv3nlzxszdbhbdcntp +vm76xr +pksrznbsfg4 +7twobsxjrz1eighttscqzfl +6sixoneightnc +bnvvfour7sixzgxxgctdvfive +qrxoneight7vsdlprzmvneight +5blqzhrdr8ptwoseven7twonefh +j8 +three3938ninethree8 +ctvc2 +sixqdmvtwosixpfour3 +86xqkfzzn +dcjxcj4sevenkglhzcthreesvbkcgxkg +sixcqncsgn6cqfvcl28three +4five6fivetwothreehtpfqvfnvteight +rdcmt3 +4eightzxxfvrp4sixz +sixsevenhcf13qfdnnqml +sevenqzflnkpppvdln5mcztone +twosixqdqdscpzfvzxx4 +seven3six +48four8 +kmsflcqndhnl3onedqfkd7seven +lrtdllmlz3smpvmhsggfjrvheight42fl +vpftvkgzmjl57qgvlsd5 +bkbrkjtpmtwo2gpmkjxnxlfive +eight7three8twonbl +nflq6nine4qrpzclr7 +onefour1hjndfpkndthreetwo2 +gphthpbfeightmsvtdp2six +98two6threemqnscvg3seven +kbrqglhqseven3onetwo13 +rvzddkzftqlnine8hngltmmz +fkeightseven52hptcfivengnrj2 +7sevenfivefourrdbdxh7 +pnjpbvlrd2jfivexflcbseven +four887seven9lc2 +4sixlsxxlqqvpxxhrlhqc +cq5four8 +7threedzdp527eighthxjtzfxv +bdlhgonexrjsfvxghxxchcdd3dpltbbklpvbszm4 +6twonineeightkvhlhlfm +nine6krqqzfive +eight8qzkhfhm +3eightsevennine +eightx38fourf88 +qkjxldk8418n +r15xhtkntq6nxcqvrmfpbvcponeone +ztgf92 +five9vbqlbvkksixtwoone9 +onevjbktjqn4onebxml1gckfssxst63 +fhrhvvst9fivefourxmspzh +3six191dbxtkm +mq5vczknqlqdd4eightvpv +ffourthree4 +four4rvcrlbb96 +95ninelttmq9 +9fivetwothree71five7oneightrt +zvhmfqbzfjtrv19h +57eightvmqfvrjg9 +r2lszmztwo +5919xj +jkmrvxgmzrflqtzkc44onenjftxgm3 +pmjpbdxpgctkninelpgrdjkrrzdpf2 +dxveightwo6psqffzhc5jc +seven5ftzpsvcfzhhtgpdtghpxfmhfjvppkone +822oneoneoneightct +mhzjmppgh7cqpxkmdtlthree1vgkqxcfvpgtwo +78bbrbspqpjkjcprh +eight7hdgm +rpvrvrqtgc87 +6oneqcntnrblvqmm2 +nbsoneight7 +hxfzqzqvsnfive4five44ctbldgcpg +fxvnkksjcz77threemgcgzfrbqzdqtfgnine +qcl45q17 +3gdqztrfjcmz +threebkcvccgsrrp77onetwoccrmtwo +1vmvqqjg58onetwoeight +jknhpr85stqcsfbrbm +three941rlqcpcjmffivecqgzbzjl +44dnnvrlgqsixone +4kkxgggmcbn4bqjrcvdbd4vcgxsvsrk +8fivemgvrcxlhsix4 +twobvccclhj6vtzfhtwofiveninehqsnvcxgfourtwonexrv +3sixvzzdkblrhlgbplqkqeightsnlncvqcxqsix +six9jgsrxknfmfv5four4seven +fourthree1 +1xndxzh +2znktjrsevenrgvc2tcmbbxzj +416nineonebgnninetwoqlpglcvcxc +gone9bjv8 +2gltwof +hhonencqn2dnzhjpfrs3n59 +fourcjmsf3 +mtwothree82four +onefivetwonxv5 +xgvfxzfshr1 +nine15 +21rfhzxlngk2fourfm79 +3cdzbnrvqbbrklrsvxktmghrn6eight +two25gv8sevenkmkprbgzzlkddnine +fiveeightrscknxv1jlhzgjjrxktcvjgqkqqzjqdjgsixvqlhjghsm +33nine39pfgsdtptzbqhfjppp4 +7nftkbhcgtthreethree44 +fivefournrqbl3 +43fzvdptqnq +499four1bdpvvvfnine +9tt +381ldxxmdsgtwonine +pmctnnbdzmxmqrdgcj8sxbpshfzxdnznvtldqj5 +jnhtfjqfive7hvsxqsixnine1 +cnhkqbhtwoonezhdlbxdtdk6 +four5oneonefivehkzcxq9seven4 +onefivexpfour2 +42six2threesixfour5 +8fmqpdhpjv1 +1bnlfgqnseven +tkzcs9ndthree2366 +qttwone5711vjvonesix +nrp62ggmtwo87twofbkpbgtlr +11cgcbfprckdrtzxqlckxhvbjqbslvvnchpkdqfg +1nhkzggnnxhnrbkzjq3nine6one +zvhgzgpvll1dkvbdf5fourfgqqdnp +one1rkpsfddfh6four +hmfxqb9twol4dpfmz4threelkg +xlcmzqgrq7threetwo97 +ntwonedz3dbgngsnshb6bdbtspkzzttvhphqdbz7mpkbpchsf +one586fivethree4ghcgjrqltgeight +1eightone +seven96two2hjxp +9two5bzzfzfive661 +nine12ninefourone8oneightsv +pdlcdbgsc5 +xnpbsr3fourrgjhdzgbxsfbvhhjlthree69seven +qtnxqffour6sixfour9cmnxsrjttonej +psshpgrbhnjhgr7 +428 +7twotwolghmqhkxthreefoursevenzmkzhvs +13hcnzjhsix2 +7four5nxdq3fivesevenfivesix +hzfqzc2fourone34 +7tdr46hrdgjlzkptkqhmsffh +gqc76 +33376 +32three45kvlmcvmmh63slm +842xbtj +lvjzkvqthree2six +64ninentjfiveeightppljppn1d +four8fzvmnfourtwopggbxv +fivexftmjtmxdp7 +sevensjmhskjnmpfnfj55xhgchqcgbsixdrtg +sixccttdcpvklgspscrbronefour3 +foureightnine4jnm +86twofour +fqrpnphnqr98nine7 +fivetwo3 +8dbqjkxjfsgpsixsixeightthreepfmtsnk +9sixonembbhvbmsfseven1 +sixdsvdctxpchvgkggtwocvzvseven8onesix +5lmbjk7nine7szmvnkmz2 +fiveeightfive7xlcszxsevencrxdfzsmccb +lhmvzszvbxxq592 +eight814srjh99 +qdqzvx2sixjp +4fbtjrxs +9ftbf668sixsjninethggtdncsv +4ninezzmbfbjn +75nineonefivesix +ninethreevntrpltfttnlzgn7 +fivefiveseven4seveneight9three +89bspmdgzcm +6jnnmhkfourfive63eightggchjtwonet +6twocsjssxfnfxbqrqrhdfrlzfldf +xhlk7xdmg +64ninesixhhmjhglhp +6fourkm9mnnrbjpjtwozdgtrsseightwox +rjrldgmzthree5kqnjmxpmmr1threefiveeightbjjvk +2bzsevenfour +pkkrrzlnm31gkfvfjpvhfivefour +jtnkdkldq285fiveg +tvzmqone8mqsfeight5 +9nineeight1vnsm6tx6three +24gnthreebzz9six +dvcmqppn7 +one5three3ninedqxqljq +five8gdtthree4jjnhbdkp51gtkmbnjzk +cvsgrlfdflhjp8dvfourninefive +113three26 +6dhfrhjthreebslzctwo85vgjbr +4seveneightzvbrjtvbvzcmzxshl9 +five24kfrninepp7 +onejlx6nsgqcckqfgkstnczpgmzcfx2rbqdvcjpr5 +2fiveoneonetzkqxs95ztchd +1nineblthree +xndbmvlqlkq6pkzvzlplbthreethreethree +sppdbmqndkqj7 +hcdkt8fdlqmkprg11seven +sevenseven84five6sjbsvkds +9two3eightone5 +dreightwolpqzcqsmqfiveeighttwoninesg9 +vzplxbbt9rfftfmmvnine49j +8ninetfvjmjlxtseven3chppcpt2gzfdpdm +nfbckqn7 +four5threenine +9threeccgvdstztf4 +one772nineeight +fourfive2v387 +five9dpbgxxjkg64 +nvngsn9six32fivenine +pdctqmdvdpqbdqs49pgzfive +seven5trmnqnqgqprkdkxcsrtmzjccgrtbklnhnfive +5kpjfc3rt +47four +61fourvz3 +3gtzzrsphbrkqgmfmgdhsixdskqqzhfoursx7 +four4rfnhpqblsixcqhlfkdkn6 +nine1nzrqg9 +two5three +f7trxrqhfpg3fourpprkpvone +eighteighteighteightsixone2fivefntjsvkln +992xtfbdstcnlkfxfour1q +5bhhlkrhjptwoeight2d +488 +2four8twosevensgtplsfournine6 +8jnsljdgdbbxzvvxrzhv8fourdvvcvmcsq +zqmthreekdvdd9eightcxkjckgd +eightninetwoeightfpznmztv722 +bslvfrtgqb3seven +3fourtxlrxjfskztwoeight5kd +kjgbpdxbrsv2twosix +eightfivesgbktt47sixeight3 +4oneninelpfjmmzcsq +3eightsixseven7sevenxscsrrfc +18dgvtgskkfoursix +one87 +386tworhzbhbtonesix3 +516xdqcsdpxpfhzbblg +nldnine15six59nine +seventhreegpqqdddh9five +dkktl5gnrmjgbfsfive7568scfgqvrqs +glfourseven2sevenqvpc +nine1cfttktvqjxzbb +twoqvfzx56one +eight1lzfkrsclhccxtwo6 +9one5 +1onetwosevensevenfiveztgmhfldthreeone +4ngnpzvpvdz +3452 +6lklgpxstsixtwo +tcpbcspsix4vdlvsqddfvxeight79 +xhgxp7sbnbfsfxntspbncg48fivetwonine +7eightgmleight9xbzlpgjqsix7jcsvplq +lmdbvbkpfive3qtkf35 +3xfszvbl +2sevensevendrzzljmqcr +1four2 +mnhqcgffllnlhthreegneightcxbhz23 +znrprxdtp9sevenoneightnk +18ninethreetwo +fournineftpqcmsix213 +eightlmgrjxdfl5six +52eight495 +6twogmvhfrrzhkthreegplbmssixseven4 +hvpnvkrmrqfivetwo6dlgtscdmfsq +ninemseven9seven +zfqfdz5sixbmlsvzckgvskseven8five +sixsevenjcmtgqtb1nmnmqggmc95 +sixeight8fourseven +6tppqxqsmljd2rjfffxbeight86 +69two1seven +813three1eight +rttddjcrmc52eightcsevenvhxc +kvpgfbnrkzseven2fourgrghxjplqbgnbvpznbdhrxgdqzzkdgfdbqggbmfg +seven8eightfive +3tgcnpp +316ksn9twohrtgbcmcrdn +1ccsfttwosix +eight1sixnine3cfvzlfh +5twoxhmlzmvszm +4ninefourhvqznsjng2 +jzvdcjsdpmrdzbkvdfourfivefour9 +lnlhncjthreeseven5 +six8seven4seven4qtncq +2threesixjzdzmlfsdmqc +threenlrd33 +three3sqfmq7nine +jrgvgjlnlthree78kf +tgngldxnkzf2one8 +mpmeight92seveneightsix +tninethqhpzlkzhgmkqsix574fsd +seven8five1seventhree5 +jf533reightrxjdrqhsix +mxvnxmxmnvkfqcnzzpc1twoone3 +four7twodlfxxrsix +gfflmcdlsix5fgthree +threecnqdtbvjxmgndzkkninedclqh78zk +fivesg8dhhthspm +sixmbsnvvzncxz4one +8hkrb3oneightj +sixsix3gqtvqqnmtph8threexchpjtcxfj +8399 +2hzngcnshdktwovcxchdqrh +five6ddcnpsdlllrmmnvmmsix +ninerxfpfsixone9 +xrjphdrq3kdvlg5twoks +threegnklthree1rbthree3 +fivenine1tftcphztmfthj23 +3h75eightfdnz +twoone4eight +4783five +threeqsbhznhfd2jgjjggt8hmbdhstsix +seven2sixthreeglzvrcvlhfivenine +9jht8xdhfrsjbhthree11 +seven9twosix +2rzzmzgbqggbqhlsdt2seven +733eightfpljbfm4clqccf1fjgkgxdktz +ltvlb331jmp1sk +5fourseven2kdd2vfour +4sevenone18 +lsscqvt7seventhreevcqvpjndvltwobkv5qgfhczmhxg +659five +nzl231pzllsvcmpncslfmseight +nine8zsnkrnine +rlgzb95eightxmj +5sixsixkstxnclx6 +jkkxmn34nttqsrhdtkjl +2mjkqdlfrjjnvbv +fourhqbhbxfvzkrplxqkckl55onethree5 +bffncpr8tclcgtwo2 +nbqtkrhnmrh9hvctrhjzvbqrs +vfxbqqxlpx1sixnine9 +d2sixsixsevenseven +jtwonethreesixseven8fiveseven +4mlvbpnxzmsrnzvsjlpbcxgsmvcqdmqqlrhj15 +bskfxdmsixeightnbtdfpbtmgpddrkkczr9one +ng8eightfour5 +53ccpsnxndthreegcpjgkzbmvcrbfive +4one2threedmb +9kfscngdfrnine +9four32skfdjfour22ltv +pgfourrntwo985 +seven5cpvbsonefour +seven7onefive +9pqspsbsneight6nv +eightdbsevenqdsh3zjgmlxlgpnjxjt +vcj7fzhmjnqjdds +rczjzrsrzfiverbzmpcjthree7 +cvdqclthr9 +twosixonefour1sevenmsb +tdrgmvlm343938qpvjd +8nine33fivethree +5hpbhcpkkgfour7sevennine +1m +rstwonevngtsslzn2 +sevenfiveoneninehfmdseven9bvfqbvvhbm +gonetwothreenlqxbpfpxs1pfrkgzjjk +58three768qsrffkxp +eight4sixsevenfrjcfour866 +4seven3hpjfllmhhncq +fivesnbldvhsixdl4 +4twofive +rlrj15 +2sixpqspdfssix +five32lxgrrrbnntpqhhxcgcztqgtbsz +ncvnfivecnkdpjjpbh93ninejvqslxxpm7 +kdfcfqrn9eightonebsix2prnbrmj +gsixninels229dsflfvnine +zjxvkq7cvlcggkskcccmcsconerszqnmfghnine +4four1tlfnjgqzz +78twonine2kzhqdgx169 +bfive2fivegktdzmtlbf3jlfzdktsg +35eightfive9six9qsnq +3twobhf2fjvgr2 +2ggns35nsbcldmone +jpdqktwo4tdvh9sxslths7 +ggkplvtgctpgzmxbmdt3btqmgsnmvqqxv +5kntpbjz +nfqjskkntdlbsjzsjxvmjbfivemcbhkzrjdhvfqzqkbbbqv7p +five2nqcj7sixsixthreeh +fg3one +4nineb1threesvbks2lp +xxlq9 +rptjtqdgfghmxhv4239gptndhvjqd +4lbbtzvcxgxnfbbv7 +eightzzmcxmthreekkmq919 +7jpdvzs1threesixhctfdzpdlmxqgz +97bzcqhdnpvmonesix4pfpsevenbjvctzqchd +tlbxlftmc73nineeightzktqfzqhxx9nine +5six4 +4bxgmpcd1seven4grrdnine3two +1lsfpdnmlzlkczfdqpbkdb5pjns6lqqnpvkrjsg +hzxppjnkhbtqnrqpleightggcgbrhm3 +7bzz199threecmnrn +five214qcppmkvzdq5six +fiveeightgvqnvcmgsthreefive2 +eightfour6kds2 +eight1seven5 +xone3fivetwofivesix3qqqsvhmt +twogrfrrmkc4zkrpsp9two +twofourfour8 +sevenlfive7psixonefour +kfxfgt98jvdrx +45gzmzzxh +2gvxgmtone7twoxqninenrqr7 +twotwo1onexgtmdnvss +4517seven +7onensevenj6555 +fivesix9nine +329lbrn +xkzrhlcrfmrmfqlseven3five +2877rfplvjbvjj15 +mzzfdftbninesxsdxltwo79bsdvnine +79tfnmsevennnmsdrgzlsg +kgmhkkq64threesixeight44mskzftd +vnjz8onemdnjfzmqcgxqonemspchrxlggoneightptg +83hqrd1sixsevennine +fcbdjhdndjchqlvdv2sixoneseven4fhfhxrrrxeightwotpt +ksfbthjpczlghsgkfive6 +663krqxqlznine8 +sevennineeight1nsk8mvblkzzz +1seven74 +tvqlxnzn7 +mbrphrdzsvnlpqlfdfpqrmf2 +two9pbxbt1fivecpp +six2onelffxlvkh8sixfive3six +fourdkqzfive9 +reightwobp9bzpx71six +2mconefour +6fjpccfour +seventhree8one293 +six3khrpvrhzgthree8two +7357sixhsbgkkkfljlrmbx +75twoeightfourbcgeight +ninenineone2two2 +gfqhnhjgt762zfgpzdzdhh1 +nghtwone5sjbhtzgseventwomdm +gphcvbvxfxdbnqcttt37 +qone3nineqfqdcfc +3eightnineonesixslhkjqgmreight +two5dfive56 +seven9rk +9six6seven +1crhxcgsfqcfvgvrr6nine7tworzbvh +skbfn94hskkfzsvqj4eight +mbtkcgqj4mbfour8 +blghkbbgx3 +6oneeightnine6 +1threesix +1jzlbxmxbseven39 +65nineszqvcgghgg +threepcjrl1 +n346seven4 +oneeight3 +7vtcgkpgqqzcxdxrjmpbjone1pvxcjjtpdtcprkq5mqxkjpbqkd +32skznxsevenone3 +sevenninesrrcmxdgnq2vmlvdhj +2nine3vcfivemb5six2 +5hx78fournine669 +qszds3 +six4seven2one87four +plxfoursc41five +sixfour9fivernqcknsbgpfrzmgz3 +onesevenf78threedzvlm1 +xlkdlhlk23four +8ninejseven5 diff --git a/2023/.inputs/02 b/2023/.inputs/02 new file mode 100644 index 0000000..df26935 --- /dev/null +++ b/2023/.inputs/02 @@ -0,0 +1,100 @@ +Game 1: 1 green, 4 blue; 1 blue, 2 green, 1 red; 1 red, 1 green, 2 blue; 1 green, 1 red; 1 green; 1 green, 1 blue, 1 red +Game 2: 2 blue, 2 red, 6 green; 1 red, 6 green, 7 blue; 10 green, 8 blue, 1 red; 2 green, 18 blue, 2 red; 14 blue, 3 green, 1 red; 8 green, 1 red, 9 blue +Game 3: 6 green, 5 blue, 9 red; 4 blue, 1 green, 13 red; 9 green, 14 red, 1 blue +Game 4: 14 green, 3 blue, 16 red; 20 red; 4 green, 2 red, 1 blue; 10 blue, 11 green, 18 red; 3 red, 3 blue, 6 green; 2 green, 18 red, 9 blue +Game 5: 5 green, 4 blue; 1 red, 3 blue, 2 green; 4 green, 2 red, 15 blue; 11 blue, 8 green, 4 red; 4 red, 3 green; 4 red, 3 green, 7 blue +Game 6: 6 blue, 10 green; 2 red, 6 green, 2 blue; 4 red, 4 blue, 1 green; 2 blue, 7 green, 2 red +Game 7: 14 green, 3 red, 2 blue; 5 blue, 3 green, 2 red; 1 green, 3 blue +Game 8: 7 red; 3 blue, 9 red, 1 green; 5 green, 5 blue, 7 red; 1 red, 2 blue +Game 9: 3 green, 4 blue, 1 red; 3 blue, 12 green, 18 red; 7 green, 9 red, 8 blue; 2 blue, 10 red, 12 green; 4 blue, 1 red, 1 green; 4 blue, 6 green, 6 red +Game 10: 2 blue, 4 green, 2 red; 7 green, 4 red; 5 red, 8 green +Game 11: 1 blue, 10 green, 15 red; 1 blue, 2 green, 2 red; 5 green, 10 blue, 8 red; 13 red, 7 blue; 1 red, 9 green, 4 blue; 9 blue, 9 red, 8 green +Game 12: 1 green, 10 red, 3 blue; 14 red, 1 green, 4 blue; 6 red, 3 green, 12 blue; 13 blue, 1 green, 18 red; 4 green, 14 red, 7 blue +Game 13: 1 red, 3 green; 2 green, 1 red, 5 blue; 1 blue; 1 green, 7 blue, 1 red; 1 red, 2 green, 7 blue +Game 14: 7 blue, 9 red, 1 green; 8 red, 2 blue; 11 red, 18 blue, 4 green; 2 blue, 3 green, 1 red; 1 green, 8 red, 9 blue; 2 blue, 8 red, 1 green +Game 15: 8 blue, 3 green, 15 red; 13 red, 10 blue; 2 red +Game 16: 1 green, 1 red; 1 blue, 2 green, 2 red; 1 blue, 4 red, 1 green; 3 green; 2 blue, 3 green, 4 red +Game 17: 1 green, 3 red, 14 blue; 1 red, 2 blue, 2 green; 3 red +Game 18: 1 red, 2 green, 8 blue; 2 blue, 14 red; 4 blue, 2 red, 2 green; 6 red +Game 19: 2 red, 11 blue, 18 green; 3 red, 6 green, 3 blue; 7 green, 1 red, 10 blue +Game 20: 10 red, 1 blue, 4 green; 4 green, 3 blue; 10 green, 13 red, 4 blue; 2 red, 7 green; 4 red, 3 blue, 5 green; 13 red, 1 green, 4 blue +Game 21: 20 red, 4 green, 5 blue; 10 red, 11 green, 4 blue; 1 red, 8 blue, 14 green; 11 green, 8 blue, 15 red; 8 blue, 2 green, 13 red +Game 22: 2 red, 11 blue, 4 green; 1 blue, 3 red, 6 green; 6 green, 1 red, 1 blue; 4 green, 7 blue, 3 red; 11 blue, 6 green, 4 red +Game 23: 6 green, 3 red, 1 blue; 17 green, 11 red; 1 red, 2 blue, 13 green; 13 green, 19 red +Game 24: 1 blue; 12 red, 1 blue; 1 red; 12 red, 1 green, 1 blue; 11 red, 1 blue; 12 red, 1 green +Game 25: 12 blue, 6 red, 3 green; 8 green, 14 blue; 11 green, 5 blue, 6 red; 4 red, 12 blue, 8 green +Game 26: 15 red, 13 green, 9 blue; 9 blue, 8 green, 7 red; 2 green, 6 red, 3 blue; 1 blue, 7 red, 3 green; 13 blue, 4 green, 18 red +Game 27: 9 blue, 5 red; 15 red, 12 blue, 3 green; 12 red, 12 blue, 1 green +Game 28: 18 red, 4 green; 4 green, 6 red; 1 blue, 6 green, 19 red; 9 green, 17 red; 4 green, 5 blue, 18 red +Game 29: 7 green, 6 red, 6 blue; 6 blue, 19 red, 4 green; 4 green, 4 blue, 13 red; 5 blue, 15 red, 10 green; 2 green, 6 blue, 5 red; 8 red, 10 green, 6 blue +Game 30: 1 green, 13 red, 12 blue; 1 red, 2 blue; 11 blue, 1 red, 1 green +Game 31: 8 green, 18 blue, 17 red; 4 red, 8 green, 6 blue; 9 blue, 7 green; 3 green, 1 blue, 12 red; 5 red, 10 blue, 11 green +Game 32: 17 red, 17 green, 7 blue; 18 red, 16 green; 1 blue +Game 33: 16 blue, 3 red; 9 blue, 1 red, 2 green; 3 green, 7 blue; 1 green, 4 red; 3 green, 1 red, 8 blue; 5 blue +Game 34: 5 blue, 8 red, 1 green; 9 red, 10 blue, 7 green; 1 green, 14 blue; 8 blue, 4 red, 10 green; 15 blue, 8 green, 7 red; 2 red, 6 green, 3 blue +Game 35: 13 red, 9 blue; 7 blue, 16 red, 10 green; 4 red, 6 blue; 3 blue, 12 green, 7 red; 8 blue, 6 red; 10 blue, 3 green, 2 red +Game 36: 1 blue, 9 red, 2 green; 11 red, 3 blue, 2 green; 2 green, 6 red; 8 green, 11 red, 3 blue; 4 green, 7 blue, 11 red; 9 green, 8 red, 2 blue +Game 37: 8 green, 3 blue, 4 red; 14 blue, 10 green, 3 red; 19 green, 2 blue, 7 red +Game 38: 2 green, 3 red, 3 blue; 3 green, 9 red; 13 blue, 8 red; 6 red, 5 green, 13 blue +Game 39: 8 red, 5 blue; 4 green, 5 blue, 3 red; 18 red, 2 green, 6 blue; 2 green, 5 blue, 17 red; 1 green, 2 red; 5 green, 6 blue +Game 40: 12 red, 4 blue, 1 green; 11 green, 20 blue, 4 red; 10 blue, 4 red +Game 41: 2 green, 2 blue; 2 red, 2 green; 2 green, 2 blue, 10 red +Game 42: 6 green, 3 blue; 2 red, 2 green, 1 blue; 3 blue, 5 green, 6 red; 6 red; 1 blue, 6 green, 12 red +Game 43: 1 blue, 4 green; 1 blue; 2 blue, 8 red, 2 green; 2 blue, 1 red, 4 green; 1 blue, 4 red, 4 green; 4 green, 7 red +Game 44: 8 green, 9 red; 1 red, 2 blue, 13 green; 4 blue, 8 green, 17 red; 13 red, 13 green; 1 red, 9 green; 19 red, 3 green, 3 blue +Game 45: 10 blue, 2 red, 1 green; 6 green, 5 red, 8 blue; 3 blue, 1 red; 4 green, 10 blue, 4 red +Game 46: 3 red, 8 blue; 6 blue, 7 green, 6 red; 6 green, 1 blue, 7 red; 8 red, 1 green, 5 blue; 9 red, 12 blue, 10 green; 7 green, 5 red, 1 blue +Game 47: 5 red; 2 blue, 2 green, 5 red; 3 green, 7 red; 14 red, 3 green, 2 blue +Game 48: 7 blue, 12 green, 2 red; 11 green, 10 blue, 1 red; 1 red, 13 blue, 2 green; 14 green, 2 red, 9 blue; 2 red, 12 green, 3 blue; 2 red, 7 blue +Game 49: 4 green, 5 blue; 9 blue; 10 blue, 5 green, 2 red; 10 blue, 2 red, 2 green; 1 red, 1 green, 4 blue; 2 blue +Game 50: 2 red, 2 blue, 7 green; 7 red, 9 green, 3 blue; 5 red, 10 green +Game 51: 15 red, 9 blue, 4 green; 5 red, 2 blue, 15 green; 4 blue, 3 green, 20 red; 12 green, 1 red, 10 blue; 10 green, 5 blue, 13 red; 9 red, 10 green, 11 blue +Game 52: 3 blue, 12 green, 1 red; 6 green; 1 red, 8 green; 1 blue, 1 green, 1 red +Game 53: 10 green, 7 red, 12 blue; 9 blue, 6 green, 2 red; 8 green, 5 blue, 5 red; 7 blue, 16 green, 11 red; 6 red, 8 blue, 13 green +Game 54: 10 green, 6 blue, 3 red; 6 green, 2 red, 8 blue; 9 blue, 11 green, 2 red; 10 green, 1 blue, 3 red +Game 55: 4 blue, 1 red; 3 red, 7 blue; 12 red, 4 green, 8 blue; 3 green, 5 blue, 1 red; 13 blue, 12 red, 1 green +Game 56: 12 blue, 15 green; 1 green, 7 red, 11 blue; 5 green, 9 blue, 1 red; 8 red, 5 green, 6 blue +Game 57: 4 green, 11 blue, 18 red; 14 blue, 14 red, 16 green; 7 red, 15 green, 3 blue; 18 red, 20 green, 8 blue; 12 blue, 9 red, 16 green +Game 58: 10 blue, 9 green, 8 red; 13 green, 6 blue, 8 red; 8 green, 4 red; 4 blue, 1 red, 18 green; 7 red, 10 green, 10 blue; 15 blue, 10 green, 3 red +Game 59: 17 green, 2 blue, 2 red; 2 blue, 1 red, 8 green; 14 green, 1 red, 1 blue; 15 green, 3 blue, 2 red; 2 blue, 8 green, 1 red; 1 blue, 1 red, 8 green +Game 60: 1 green, 1 blue, 1 red; 4 blue, 3 red, 2 green; 13 green; 2 blue, 2 red, 8 green; 4 red, 12 green, 4 blue; 4 green, 4 blue, 4 red +Game 61: 3 blue, 7 red; 5 blue, 8 red, 1 green; 1 blue, 8 red; 10 blue, 2 red, 1 green; 1 green, 5 blue, 2 red +Game 62: 10 red, 2 green; 8 blue, 7 red, 2 green; 4 green, 2 blue, 10 red +Game 63: 1 green, 3 blue, 5 red; 6 green, 5 blue, 2 red; 3 blue, 7 red +Game 64: 6 red, 20 blue; 4 red, 3 blue, 2 green; 3 green, 19 blue, 6 red; 2 green, 6 blue, 3 red; 13 blue, 5 green, 5 red +Game 65: 6 red, 9 blue, 20 green; 6 red, 16 green, 4 blue; 12 red, 6 green, 5 blue +Game 66: 2 blue, 5 red, 4 green; 13 blue, 2 green; 1 green, 6 blue +Game 67: 4 green, 5 blue, 2 red; 1 red, 14 blue, 6 green; 1 green, 14 red, 5 blue; 18 red, 16 blue; 15 blue, 8 red, 18 green; 1 green, 18 red, 6 blue +Game 68: 1 blue, 9 red, 7 green; 7 red, 1 blue, 6 green; 5 green, 1 blue, 8 red +Game 69: 12 green, 3 blue, 4 red; 9 green, 8 red, 7 blue; 4 blue, 5 red, 10 green; 4 red, 5 green, 7 blue; 9 green, 4 red, 2 blue; 3 green, 13 blue, 1 red +Game 70: 9 red, 1 green, 8 blue; 11 green, 13 blue, 12 red; 3 blue, 5 green, 8 red; 1 red, 14 blue +Game 71: 10 blue; 2 green, 8 blue, 9 red; 5 red, 1 blue +Game 72: 3 green, 5 blue, 5 red; 1 blue, 1 red, 2 green; 4 red, 4 blue, 1 green; 5 blue, 4 red, 1 green; 6 blue, 3 green, 5 red; 5 blue, 1 red, 4 green +Game 73: 3 red, 1 green, 1 blue; 7 green, 2 red, 1 blue; 2 green, 1 blue, 3 red; 1 red, 4 green, 1 blue; 3 red, 5 green +Game 74: 5 blue, 1 red, 4 green; 3 red, 2 green; 4 red, 6 blue; 2 red, 2 blue; 1 green, 4 red, 8 blue; 5 blue, 4 red +Game 75: 3 red, 5 blue, 3 green; 9 green, 6 blue, 7 red; 2 green, 3 red, 12 blue; 14 green, 4 blue, 10 red +Game 76: 1 blue, 7 red, 1 green; 6 red, 1 blue, 2 green; 4 red, 2 green; 3 red, 1 blue; 16 red, 1 green +Game 77: 3 red, 10 blue, 1 green; 4 red, 7 blue, 3 green; 7 blue, 6 green, 7 red; 5 green, 15 blue, 7 red; 12 green, 5 red +Game 78: 6 red, 10 blue, 15 green; 6 green, 11 red, 4 blue; 6 blue, 8 red; 4 blue, 7 red, 2 green; 11 green, 7 red, 11 blue; 3 blue, 14 green, 6 red +Game 79: 14 red, 6 green, 4 blue; 13 red, 6 blue; 6 red, 13 green, 4 blue +Game 80: 8 red, 2 blue, 8 green; 6 red, 10 green, 4 blue; 3 red, 9 green; 2 green, 8 blue, 7 red; 7 blue, 3 red, 11 green; 1 red, 12 green, 8 blue +Game 81: 9 red, 4 blue, 11 green; 1 blue, 4 red, 2 green; 5 red; 3 blue, 2 red, 2 green; 14 red, 12 green +Game 82: 5 green; 2 blue; 2 red; 1 blue, 2 red, 11 green; 8 green, 2 red, 1 blue +Game 83: 3 green, 7 red, 6 blue; 7 red, 7 green, 11 blue; 7 blue, 13 green, 7 red; 12 blue, 10 red, 2 green; 1 green, 11 red, 7 blue; 12 blue, 9 red, 9 green +Game 84: 5 blue, 1 green; 16 green, 4 blue, 8 red; 7 red, 5 blue, 16 green +Game 85: 9 green, 20 blue, 7 red; 19 blue, 14 red, 2 green; 10 green, 2 red, 10 blue +Game 86: 1 green, 3 red, 5 blue; 9 red, 2 blue, 6 green; 8 green, 14 red, 3 blue; 18 green, 2 blue, 7 red; 2 blue, 10 red, 14 green; 17 green, 4 blue, 12 red +Game 87: 4 green, 8 red, 13 blue; 7 red, 13 blue, 4 green; 1 green, 8 blue +Game 88: 9 blue, 11 red; 5 green, 7 blue, 12 red; 10 red, 2 green, 1 blue; 2 blue, 5 red, 5 green; 7 red, 6 green, 9 blue; 1 green, 10 red, 5 blue +Game 89: 7 red, 2 green, 1 blue; 1 blue, 2 green; 6 red, 1 green; 7 red, 1 blue; 3 green, 3 red +Game 90: 8 blue, 2 red, 3 green; 9 green, 4 blue, 3 red; 7 green, 11 blue, 2 red; 13 green, 12 blue, 8 red; 10 blue, 2 green; 5 green, 1 red, 9 blue +Game 91: 2 red, 2 green, 4 blue; 5 blue, 2 red, 16 green; 11 green; 3 blue, 2 red, 8 green; 4 green, 3 blue +Game 92: 8 red, 12 blue, 3 green; 11 red, 10 blue, 6 green; 14 red, 8 green, 14 blue +Game 93: 3 green, 2 red, 3 blue; 3 green, 3 red, 1 blue; 2 blue, 16 red, 3 green; 2 green; 5 green, 2 blue, 2 red +Game 94: 5 red, 2 green; 9 red, 3 blue; 2 green, 2 blue, 5 red; 3 blue, 8 red, 2 green; 8 red, 1 blue, 1 green +Game 95: 3 blue, 4 green, 7 red; 7 red, 1 green, 15 blue; 6 blue, 2 green, 7 red +Game 96: 2 blue, 1 red, 6 green; 7 blue, 8 green; 1 red, 7 green; 2 green, 14 blue, 1 red; 3 blue, 1 red, 7 green; 4 blue, 11 green +Game 97: 2 red, 9 blue, 8 green; 3 green, 5 blue; 6 green, 1 red, 9 blue; 2 red, 13 green, 1 blue; 2 green, 2 red, 2 blue +Game 98: 2 blue, 1 green, 1 red; 4 blue, 5 red, 1 green; 4 blue, 3 red, 2 green +Game 99: 17 red, 2 blue, 4 green; 4 green, 8 red, 6 blue; 5 red +Game 100: 6 red, 4 green; 3 red, 2 blue, 9 green; 1 blue, 5 green, 14 red; 1 blue, 2 red, 2 green; 9 red, 1 blue, 14 green; 2 blue, 11 green, 8 red diff --git a/2023/haskell/aoc2023.cabal b/2023/haskell/aoc2023.cabal index 65e8574..1d985bb 100644 --- a/2023/haskell/aoc2023.cabal +++ b/2023/haskell/aoc2023.cabal @@ -1,7 +1,7 @@ cabal-version: 3.0 name: aoc2023 -version: 0.0.0.1 +version: 0.0.1 synopsis: Solutions to Advent of Code 2023 license: MIT author: Maciej Jur @@ -28,8 +28,9 @@ library -- other-extensions: build-depends: - base ^>=4.17.2.0, - text ^>=2.1 + base ^>=4.17.2.0, + text ^>=2.1, + megaparsec ^>=9.6 default-language: Haskell2010 diff --git a/2023/haskell/app/Main.hs b/2023/haskell/app/Main.hs index 63dfea8..6f31173 100644 --- a/2023/haskell/app/Main.hs +++ b/2023/haskell/app/Main.hs @@ -2,10 +2,24 @@ module Main where import Utils (readInput) import qualified Day01 +import qualified Day02 +import Debug.Trace (traceShowId) +day01 :: IO () +day01 = do + input <- Day01.parse <$> readInput 1 + print . Day01.solveA $ input + print . Day01.solveB $ input + +day02 :: IO () +day02 = do + text <- readInput 2 + case Day02.parse text of + Left err -> putStrLn err + Right xd -> print . Day02.solveA . traceShowId $ xd + main :: IO () main = do - text <- readInput 1 - print . Day01.solveA . Day01.parse $ text - print . Day01.solveB . Day01.parse $ text + --day01 + day02 diff --git a/2023/haskell/solutions/Day02.hs b/2023/haskell/solutions/Day02.hs index 94c607e..fdebdef 100644 --- a/2023/haskell/solutions/Day02.hs +++ b/2023/haskell/solutions/Day02.hs @@ -1,4 +1,63 @@ -module Day02 (xyz) where +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE RecordWildCards #-} +module Day02 (Cube(..), Game(..), parse, solveA) where -xyz :: Int -> Int -xyz = (+1) +import Data.Void (Void) +import Data.Text (Text) +import Data.Bifunctor (first) +import Text.Megaparsec (Parsec, optional, choice, eof, many, sepBy, runParser, errorBundlePretty) +import Text.Megaparsec.Char (string, space, char, newline) +import Text.Megaparsec.Char.Lexer (decimal) + + +data Cube = R Int | G Int | B Int deriving Show + +data Game = Game + { gameId :: Int + , gameSets :: [[Cube]] + } deriving Show + +type Parser = Parsec Void Text + + +parse :: Text -> Either String [Game] +parse = first errorBundlePretty . runParser games "" + where + cube :: Parser Cube + cube = do + _ <- optional space + number <- decimal + space + color <- choice + [ R <$ string "red" + , G <$ string "green" + , B <$ string "blue" + ] + return . color $ number + set :: Parser [Cube] + set = space *> cube `sepBy` char ',' + sets :: Parser [[Cube]] + sets = set `sepBy` char ';' + game :: Parser Game + game = do + _ <- string "Game" + space + gameId <- decimal + _ <- char ':' + gameSets <- sets + _ <- optional newline + return $ Game {..} + games :: Parser [Game] + games = many game <* eof + + +solveA :: [Game] -> Int +solveA = sum . map gameId . filter isValid + where + isSetValid :: Cube -> Bool + isSetValid count = case count of + R r -> r <= 12 + G g -> g <= 13 + B b -> b <= 14 + isValid :: Game -> Bool + isValid Game {..} = all (all isSetValid) gameSets diff --git a/2023/haskell/tests/Main.hs b/2023/haskell/tests/Main.hs index 76d221c..70a390d 100644 --- a/2023/haskell/tests/Main.hs +++ b/2023/haskell/tests/Main.hs @@ -4,6 +4,7 @@ module Main (main) where import Test.HUnit import qualified System.Exit as Exit import qualified Day01 +import qualified Day02 day01 :: Test @@ -15,10 +16,23 @@ day01 = TestList inputA = ["1abc2", "pqr3stu8vwx", "a1b2c3d4e5f", "treb7uchet"] inputB = ["two1nine", "eightwothree", "abcone2threexyz", "xtwone3four", "4nineeightseven2", "zoneight234", "7pqrstsixteen"] +day02 :: Test +day02 = TestList + [ TestCase $ assertEqual "should return 8" 8 (Day02.solveA inputA) + ] + where + inputA = + [ Day02.Game 1 [[Day02.B 3, Day02.R 4], [Day02.R 1, Day02.G 2, Day02.B 6], [Day02.G 2]] + , Day02.Game 2 [[Day02.B 1, Day02.G 2], [Day02.G 3, Day02.B 4, Day02.R 1], [Day02.G 1, Day02.B 1]] + , Day02.Game 3 [[Day02.G 8, Day02.B 6, Day02.R 20], [Day02.B 5, Day02.R 4, Day02.G 13], [Day02.G 5, Day02.R 1]] + , Day02.Game 4 [[Day02.G 1, Day02.R 3, Day02.B 6], [Day02.G 3, Day02.R 6], [Day02.G 3, Day02.B 15, Day02.R 14]] + , Day02.Game 5 [[Day02.R 6, Day02.B 1, Day02.G 3], [Day02.B 2, Day02.R 1, Day02.G 2]] + ] tests :: Test tests = TestList [ TestLabel "day01" day01 + , TestLabel "day02" day02 ] main :: IO ()