commit e1822344dbb3d0a9971fbb10723ce357db8e1696 Author: Raine Date: Sun Dec 3 15:33:53 2023 +0100 init: day 1&2 diff --git a/README.md b/README.md new file mode 100644 index 0000000..2ad361b --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# Advent Of Code + +## Day 1 +Part one was okay... +Fuck part 2, i hate it i've made 3 parsers and i hate it. \ No newline at end of file diff --git a/one/.gitignore b/one/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/one/.gitignore @@ -0,0 +1 @@ +/target diff --git a/one/Cargo.lock b/one/Cargo.lock new file mode 100644 index 0000000..ee944d6 --- /dev/null +++ b/one/Cargo.lock @@ -0,0 +1,54 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + +[[package]] +name = "memchr" +version = "2.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" + +[[package]] +name = "one" +version = "0.1.0" +dependencies = [ + "regex", +] + +[[package]] +name = "regex" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" diff --git a/one/Cargo.toml b/one/Cargo.toml new file mode 100644 index 0000000..d5cd923 --- /dev/null +++ b/one/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "one" +version = "0.1.0" +edition = "2021" + +[dependencies] +regex = "1.10.2" + +[features] +default = ["part_two"] +part_two = [] diff --git a/one/input.txt b/one/input.txt new file mode 100644 index 0000000..fd6e74f --- /dev/null +++ b/one/input.txt @@ -0,0 +1,1000 @@ +two934seven1 +8825eightknfv +sevenoneqbfzntsix55 +foursqpqvv192rdrbtcccfourone +9jpzhpxqthreelmrnlhfqmn4 +onedpsckg3xdhmgtsixthreefivejlncszkxeight +4twofour +7eighttwo17fournsmrznntgjrdpkdjvx +573 +ninethree3 +3gngzkpkgrf +qeightwo2xjvfkfiveone +twoonej26 +sgoneightfoureight5sevenjzsqghg +bnrb36xtjd7four9 +threepprhsff3prbpfivesevenseven4 +38sevennineninemnfzklttkxnine3 +8mllzkfqklhonefivemv4 +onedcqlqcrzn66three +1fourjthreefc2gbtbdzsix +eight7two4258 +4hmfzdzf +26dsmdzznm7 +plckvxznnineh34eight2 +dhrvd4eightgxznhqmh +5fxhhkghvm3nineshpcxhtwo6fourhrktpbq +qklhmhmdlgeighttwoonetwo52five +86threemmpchhzdvsvxfzrj +9clvchpgrslnkhdmfkjmlrvgnf +8ncpdtspfivethree +gtbtkqcgvh8945 +sevencrkbt3btljpdpgstlf +8nine37bpkmtghhnc2hnreightwohvs +5qxmsrthreempcmpdcnnv41 +8threezrxhxgx4g +jhsb3onep1 +eight71rnz +7p16lrxktlr6 +8one5fivelvdbjzz +1nine2twodhnineonesixkqfcbgdlfg +four8sixfourfive +pjdmt4one8sdsdhhqxlqgzpk6qrtdvxm +sixzfourkdpmnn92qbjkjqfqpn +42threefiveh +5fhgzt8threemzhblb6 +bbc3kxhvbfrn8four6five +91fknhthreefour +six9fttmqpninethreevhgtrxklbvxbljsp1 +four5five1471mtfv +3bjkggcntwo3ptmjhmthree7 +four2eightone +threedrzktlgbz4five +dmpgttqfivekcdjbf49six +9bplkkgrxgjqjqb3seven +4861sx4six +hjzmxtxvxkkpbvgpvmgb4two8bqxlvponesq +lkxxtkctlphjfivepjlrg1 +xszdbbvxjrfxs2vrmmbfourpzcfmgppk33eightwors +966fourflbfsk3 +1bskshtjseven5qlbjhqgzhbzxvlxsvtcmmzseven +56two28cbhfsdcjsix2four +6s5qcmvjltqeightslhnzmvbfvcmxj +twosevenjxk6lhrkknnkq +kjkj2lkkldqbgzhglmthree9 +ftxhnpms1onetwoxg2 +three9sixsevenmrgggztckzgzv7 +stvgmjgnine2vvsnjhlzkstwo5szsbvzjdzb +v6 +threetwolscvhrlmm3r +two17kblkphfninefour6six1 +one6fiveeight9sixjzljjfknrhkzxr +dgpqm43xthreekxgspjzrzcsix +2two8fourpppb2 +fiveseven5four +5rttwofivefnmbkn8nine2eight +43threeninelgnpzrdtbc1lbkjkvqrdcd +1seventx +nctwonefourjzgskmxjmq2 +rpzpht2tdxczzfthreeseven +two1seven +6bjztkxhsixkgnkroneightht +9mqzkgmv4vxqrpf4 +49hlj +46gv +75sixfddn75 +eight87xzjkdpnnjjfqeight +9pfcdhxbcrnpsnmvkqnsqsninedgtlmmc5 +xmfbn34 +99lvrrndpqcnhznn +qsmxhxfph24three +lql25 +8five1dhrkm +twoninefourcxksqfmn1 +7eightdclrvn +one2seveneight3ninemcpnmonetwo +33fivefivenftbczsdstlxzbp +9r97five +5fivessskxvnt6qqbkkqrggxg9gsdtbptpn +threesjdpjdkczjgthree6 +twojqm86 +bttrx15qfznmdncnz5 +ppckphrtzhstd3xvthzrxxlrrjtk +qkm6ckeight7gnmqkltz6jsrgjhbck +zdjjjlpmjtphbjpm9threeskqrphxbfqqeightone +konesix1three +four24391rzxtffour +hsevenfive36fqrbjpfj7 +dxdcssixbcnp8two639 +hnvg2 +sixeighthmqkjjsix6tbvdhzone2vsn +dfzlxq7pjmq5 +5n3 +twovjcgxdsdngt2smfxfqxeight +ftpjlnvg5qshclfzqtc2eightninefivecsrgk +zzgsjsjffpvcgfmjtnpkrsqlmpzlt9four +4btrhpznzr8oneightg +pph2one +5seveneighteight +31sfrfrcgmseven +four7bdqgrhfive3 +nbrzbggpseven9prthjvknq +3sixonefourh +fourgkrpkzdmhtwoseven6txplz +four84ldbhnkxjph +6eightonesrb +gnmckftk62jgsjxzpk +bzctx9onetmcnzhxkrtchjgqxv66 +1three5 +27two +34eightwox +6ndgrbmfkfive2ksxfbnjbl7fkrm +kxpz4gjmgcgzzq63five +nfvmfrbc151one8nggsdqvm +4clnctseven5nsn5 +hcrpbvqmmdbstlxccthkththreebm6 +gdnmh6cslzhjhdl8nine +sevenninethreefive4bgknpbnine +2sevent6three1 +2jbrmdxgpnine7 +nshlgtbkmcmgkmqone3 +dklhc9sevenrxxzzxltsnlltqcjrbgprnx +gmrjhlvzppmklnl39 +kv86eight3dcdpp6pmdzcvsix +fiveseven2sevensix6952 +3xrtthnsevenjxsxpzvc +256nmzrlzbczv +4dp7onesixvpcf +25onesevenonexvnst4smvlfszcrv +lcxncproneseven37five +ninezjsrptfivenhsqxrdz7one +cscdmnfrcxfqdtkmhkldgjlxdjqsxslhdzvvt4 +sixfnjnfkqm67blkmnqtwo +fivethree7 +2five5ninegcmqbkpp61npkpml9 +3qktrxninefour +qdhmxstwo44two +21nine +rbnineone3xppvtbmv3sevenvxkkgmgklg +mcvzplmpvptwo38 +sv176threeone +5vksixqsccgdkrrfourcgnpsfxbvj +xxtwone6eight +threeonespkbnsj9onesevenpz5 +fivenncrfvhfdsevengxzkxbkrklgsfvllrkbx4 +69kp1seven8dqkrx +dmb9ccghdjjpjxfivehtwo4 +6nhgdkpdone +tfvqdqdqcszxbrdmmrninesct2 +8sevenfour2eight8rskc +cpmgffcvln9sjdsgfivesix5rppfsfmmqtffive +5two7 +7threecrkljthreetwo +6qgqzsdhprd +959zgjscgtm +fourtwoppfrdqgtseven9 +8bbchvoneeightr +gtddrb1rznsdjtonethree5four +8rrskfzlmlbrsninezdzpt3 +6njhmkpp4onefive8two +4cqpnkcxjtwoqzqmjnqccfs256hcnqpfm +nineeightseven62sixhlxlps +dtqplzzf87threecthree +mqptgzjxddxgxpjr5 +9194jbjjktwofive +five514foursevendzxlh2 +6nineeight85zvx +four8gsgrstfmdv99hpkfgptzqkhsmgsnlggrseven +9three298 +3fpttzk35 +rbtckzonexkqmfxrnsbsrkqbq66sixkcqfzjfour +sixkdcrrrppcsix399fccnsbhfxvfiveft +xfjxbfvmbxbf3twokkcfrbcfbmkmhghsbzf +9sixonesix3lqqf9 +eight3fourgcmp +xjccxkhkvgltzqslmseven5twoqhcmpsixeightnine +62eight8 +hzhccdkxb336 +gcsbmkdfmqvxtfj81 +two445nine +xhrkgql8six41nine1 +5dnlcsjb +jdqdg8gtgrctwo4fourthree +five4five +3threecggvthjv6 +sevenzrjzqhgtvtqvkp3three5sixhxdmfour +2249eight6 +drt5trhdjqf3fourfourkfour4 +5oneone1 +threeseven5six +45bclsgsqx +6ggfjqls +rhpmhfournrzg418onevlkcxxdrd +fcvgszpsixthreegqqctvdqnfrbnlbmknlvgfour1 +twoxvrhmxjbbn2eight +27eighteightsevensix6six +veightwosix54bcvvtcgbqfzprp7four2 +9kthreeqntgvbb34693 +zxcdmfg48ftlhk +1mhcctbmbzmfivefourtwo3 +two6vxsdfhgstslsix +threesixmzhvfqsix5xhrhrvsfh7kpcrsp +oneggkztrmsgrthree536three +7seveneight81ronesix +sixllrjlqtffqvtdjqhctt66four3twoone +2zxqpgmgz +7rfngpqkqgfivetwojf +vvbfnnine3ngv +59sixninelmhmqchlthkbpthree33 +1three6seven1seven5qntpbnsfour +7nfzfsdxzfive8fjvllc4 +56seven5seven +1fivegqbrdgths +four32vmhvnk +hvdjnmpqvqbnrcrclkgkrfseven6lgrvthv +28xngctrvmnc4ntvxhmxfsj13 +onep1onecjjmxxtd +9eightwof +hzgmtfdj8nine7seven +eightseven3 +fivepnhlninefive1lcftks +122ninelrgmdgmqzd +zjsix3 +7rffvg9hbjpx +3h76 +fouronessbhxlcclkzmnnbksixlcdqtf3 +4fivesix228five +sixrlthree1bzhddfbkrgxpgxfivef +dxgqnkqfgq8 +onemcfourbmkhh5px +fmtqjcbxznine3three +qzkcxvnffg1gmhplhlffgtwo3onevg7five +twokj7xv63six +four58 +fvjeightwosixrbrgnmrrmdtwomseven69seven +5fivefour +6pg8twomrqfzkxrthree9 +7xqtqfrpprlvhnthree +l35sevencreight4 +threechpctdgtq8fxspqtnvggkxtmeighteighthdgngnmc +one16twosix +threetwofour3eight1pvgcthree +229 +ngcnthreeone7hqbbntqxeightkgtc +qtgkz1ntone68 +nine2seven +two1jjccnlrqlsdfvtgjmmhh5prfpcc +onesixvtbjgdqmtg1eight +77qkvdszsp9ctqndxzrjc +rnldvcmks74355 +fourkljgznpqntwofoureightlc3zmljfnqnr +8threetbv6cdjjbtmmxcfour4qlqjql +jfkvbvjxjzk7 +7eight8vhsdrd +onezdgffrmz2 +eightseven8 +7gjdsevenjsdkljn2fv +kmst4 +3five8smctrhdhfninelzbrszmbdm +fiveseven4ninevdfive3 +8jg6nine4jmmsbpbnskoneqxgjrphhf +mgfourfour3hgmrzkntjm2hxrrfsghnone +ninecqmg72 +ldthtljblpl3fiveonervtxnxczfx2 +9sevencsevennscmbjgthree +7lnj9four +fgtwonexmkvkcgpq36sixsmfnxjs +qgmfmnh6twoeight +56sqrseven +183877 +ntt1seveneight513 +7three6dzdrs +8sixsevenfour +mzfhdnhseven4eightvjsdnxlonenfzlcxr +sixzdczsbtq29one4eight6 +jmxcbmktjzeight5fivenhtzfsdqbx +four2rvlppone258 +fivezvlqr236nine +262 +58six2nineone5 +twoeighttwo3ktzhmdvlx +64nsjgqsqkhfqmfk +foursx18 +gklzjvvv93zzmzgpn +onenmcvr6 +qsnmlbmlr6 +sbtwonesevenfourhgltwofzhzmbsrfm6two +8fdhxeighttpcjkkmgsgnpnvsix2eighttwo +5pvxnxxdfourfour75 +85vtsgkn1kfzkszmbld4cpgrqsfive +sdbzkzp1dq5lk +28161twodfznxckr +xfpgnrlfour61 +kzkkp65qtqfppc7f9 +twospplzdrdfvsixsnldtwotwo29six +9fpbm +3one83dlvdr +9rvbtwo25sixkzlxfkg9 +8jbmfbfsxrnxk7oneninesix +3798 +jhcqmfive9 +nine35 +596 +nvzztnine2vhhchqkzfjzmkgjbzlxhvtdhddnr +5bltnjlmt12threenh2 +eight5sevenninepgxvhflb4eightmxv +xtrct7fournfivefourfive +dhbpsnpxsglnt5vsnclxhnntt61two +twoonekntsmsd81fourfourfive +gpnceightdx5pklsp79x +four5fszlnphhxvhgbmfcdkdbgbc7 +xbxtjllpr9threeninesixbbtkn6 +p7 +nine644two5 +5zzzlmspbcx9vfdllvqtl8five +four2bxmrthree +7rhgfnzqbpgmpnfz +threejhfmbmxzp469 +74ninebmtpfkzbcg5nine +fflpg34two25lvnmxvqlv +jtqtnthxqflp2onesix39 +9sevenninefd8qpfiveseven +28mb5 +lflcphkxqqnzhd2five +3seven4fftnss +ninezxhxqxxpblm9 +4ninevgpmxxmqlf8 +sevenfiveonesevenfjccpmnnninesix3nine +qmkvt6pxbdcbrcsrgppzptzchkmone +2sixone +6dzskdbknpsix +twonpqfsvbmqgeight23ct +4sevensxdzsfbmmmdrdjtpbh +sxkpmmhsix9five7 +fnxtgfrltwo67threepvbsixzvj +54jmvmdbkltqsixtmccscsixeight +6fivefourrbshbc82jrfm2 +dhlpvhzhms6 +419bhbcdsvftxfvvkxcxprksjs4 +sqrq17nine +84rjcbktz8hrplcqsvhqqnnqnsevencjhone +gkmljdk2dgrlptkxdsix3four599 +cnjpf818sevennine +8cvg +3jqbbpfpxmpkrhfoursix +9zkrhbmzkbzlcnxlgdsixthree8 +nine9kvxeight2zqvzhgjzjz +fourbglmlqzgvzhjrmz2nzqxlqseven +seven4five8nine44eight +onegnine6 +qeightwosixfivesevenzmjfrqvnsbnqlt7four +eightvrshp9xnxlgqcnninegvbj +ninelpbvs9three8ltzvxnd4 +nmnlzone3grqbzcdnpxsbcbzxn4fjptnsrqsqgsdcv +18fourcqfive1gccxg +gfglone6bqsqjmlftcqpqmmqmglskzfourvkhd9 +5cxgkn1g +29seven9ppr +fiverkmhxvnbp3lvpeight1one +77four5dsdqzvt +gvvpbone23 +twolrjs56one +six2745six +kbxplzpsixsevenseven5one3 +threexzrcfgffkjsix9zgdseven56 +onetrqcfl6 +three23nine +four2mv +xzfnzkmeightthn6twotwoeightqmf +hxxxldcvj99three5qgmllbtrsq +6zcszjbrzjpgrvfivemnzkpbq2six +6zvtsixone73three +threeflxtwo5fivefhbjptgfjmgbhpmbjmsv +5nineeightfourd +five26five7sixthree1three +fzvsixsix3mxxhseven +twoccxdqqkdvc2two9ps6threefour +447lkkoneonefour6rx +8seveneightwox +sgjv21 +soneightkmtps8onesixvpsdcfbbz +8pzrtoneffhg +mmzeight631 +5fonefive +foursgx8fiveltczmccpzx +sevensdbhnpmjninetwovlv1three +64qrjdtpxbxdbcqmmlqtnine6sevenfxhcrjnine +1seventhree +ktmfour3 +fournine8skzxtftwo9h9 +bjq8 +mrshhhzsixcxsxxmbh1bone9fivelsplqv +7threezvgxdvrthree7227 +znnvfive5mctxdfive3j4 +five2three8 +gdtdqc9nine1 +three3eightgnsxrmbmxld9six +zsgmcpxxvseven7onetwoseven6 +8n3919hfiveoneightf +3rfrzmlfsjxthreefour +dnnshdvxdl6onendg27 +66lpbz +sevenlkjpxthree5 +8clqlplvljone5hfh81 +fourldvjsixfourfour5xrmcnf +9nine2 +4one1 +4vzjgncrztvstcf9one4 +four37 +4sixlqpnqxqtrhpc3 +8threejzg +znxccm8 +one8eighteightkcvnqjpsp6nine +fivesixgc74oneseventhreesix +5twohshtsdtqk2 +hzmchfourvzjgnt2threetwo5cgfld +one9three836one8nk +ssslsdftjfgkpzkln5 +xhsxxkzk1x2tzbjthsnsix +8nineeight3njq +ninethree5eightbfour2 +five56sixclxjqsjseven8eight +three3cninenz +lt3onevpkgsixsix +4pkbmgtwo6zmvn71eight7 +2eight6cdd83 +5kvp3zhzq +vtcmdkkcmnmf1two +nine2nponeoneseven +xm1twofoursevenfoureight +ggkvsljtddcmznlxlqb4one32oneightppn +onehdq785 +vzthreezjbdrlvhglbbcvlfk5 +eight9smt1sixsevenckqxlbvdzone +one7fdcbzjtfhbps9oneonetfftbneight +3sixfgqbsngnd1zmqbxfllbp +roneight28one8fpzmkhvdhbqlrfive +4five2four453ttlvfqxb +five2four413hhnts8six +xlfpxbzrbphb3one +eightone8nineeight +1zprfttxqmtbhzckcfoursix2threenine +7sixzqrjxn92pnbfxzbrnmvrnpjpdone +pvlfeight1xkgrvczlcfvvl8kzcktkjbj +four7phjzlzn3two3two9seven +1tkcdvdtj7nqfsrnmfzghmkrqeight +36fourxfdgrprrdgmjczxb +five5fivefdkgnkfgd5 +5seven5sxlkbldznz53three8tmkzlrt +8dkxkfvjkprxtjlh5tjvjm2glkpbmhjd +seventwo3 +bgssljzld2one5seventhree4 +sixfourrqzdbdhhhc7lkxqbtsseven55 +6threegtwo7fivesrbvfk +2mpxkrtjphdseven +14seven9dkk +85dmtjqkchp7two4 +hvqfbchqhpbggrqhf4ps +dzdknbdceight72fourcmfvsrzt +xmvgjjfourfourmjmkh5onefive8 +qdfreighteightninecdxrtdbd7 +mxlhxlbvbndqfzmseven34four +432three5vqhmjzgvghnhhg +ghczftpkttwo4sixoneone4brf +kbbzcpsqsl7qdlgff5fourfive6jk +v8nxzpjxntcbtwonrcgztsthree1eightpfdsp +7zjdzbnrpltfivemgcsjzrdjskhfmbgvlr5dl +9kpbzzr +8386six3mzh3 +41nineeightfive +twotwo5threebvgmmhqrlqltqmndhveightsix2 +58drxrgkklm +8two48six3sixthtwo +eight88msfnone87nine +four5lvxfhktrconexqzqvl +six8mrlccbeightonejnzbdkm4one +oneseveneight366xzqmnmfvvrph +joneight7nine7five +5fourtwo26onefivegsnbcjj +cpjnvhnzxsevendbnblfkpx44lzn88 +zfmdcsfkktwogxmrsbtwo2six78 +ninetwo59foursevenoneightsx +vjbbphb5dddvksevenpmnmtjvzdvxkkbcqxbb +9ccgtrznm4 +zplpfivesixkjfdvrv6rfmqk +hfxhpsxgxjfdbfmjb6one +threethree9 +six3seven +seven286 +bnkrghgbkzdz29two31 +gvlzrhntvseven3 +twosevengdkzgv6 +rddtz12five9znvtsljztbztprthreeszkfhh +nfivesevenhfpklnxqb4nineonermtfsk +zzz2onegpthree4fdnqxrtcnh8 +4xchnsevenxnkbrdpzsnine6 +hveightwofourfive8 +8one3 +7chfpsbh1two +two2eight5gchbxqvrmdfqvghtnjssix1 +zfbeightwo3 +qhjnfxpfoursix9five +8fourrbrrjqqph +five5threethreezfvskmsv76 +sixvtjnktt4 +5cndcht2fivebdnxcnzzmfninenineqzktj +qfzclldsvzvcdqfxhtqqtknine527 +onefjrmmfqvgnxnjdtkdmk25zghnp +hvddcjnoneeightnine9eight +9lxpszk +17fourfiverfnbmkrxlvone +qxvdlrxq89vf +qeightwotwo2 +rzmxzgnzljzssnxscvv9seven2kbnineseven +sevenseven8 +rkhkone8four +zn68 +5pvfjmjxthreeninevtj88 +51dtwo5ngvxnmjeightgbhzxbd +two6kxkvscbxcg34six3 +qbn1 +hgxgtwoqtmsqbv3 +threethreejmtjk18two +sixone4fourseven6zcgpdqps +fiveqptd8gtjfour1twothree +89fivefive4 +sixvnvmdmfeightcbbvbrkffqstwo7 +three4fivefive5klxvsbhslzsix29 +two9sixhncrcvxmf +rsp146 +eight2jtvps +7four6 +77p1znpskm +bbdvfhqmxddlsvdpmtvctnine135 +dlclxtkxk85bn +bxbjslnrfk6 +51zfrtvmcbkkrnd7 +27fivetwobbssnklg +twojxdksqkm9ninejninekcbdgnsq3 +nineninebsbd8 +sevensevenggddbfxqrmonethree744 +srtbzcbsmfivetwothreejvzjzxqm1tjnjldcxnine +nbsix32 +25144spnmfvvj1dxpqmhsldk +5two4mrqnpxzs7foursevensevenr +fourk9zszmnbvmkdrz +lpqseven2seven +hcjgtjcxh1dskx +ssrnf2ninenine6ngbhfhdqsnine +cz82jhmgn14cktblcl +kxjzflkkbx53nine62one +hbcnpbmfour1two +ckjksxthree346pjtr +ccslpmqnine27twodr +cptwo5twoggmrjvl15eight +4vlktln5kqfsnvrbjbszqzclmnkxseventhreefive +one2eightwopp +2sixsixone5 +klvsngvv38tcxvhpdhh5 +fivefllgljkdg9ndlkpbmgbrndqbpxqdk +7ppkvstbtnvseventhreessd1three9 +threepnrcmb3 +thrqrcmzpzt7nine1three +jvgrqgbcshhlnqrl2vrlppxbnjfrdtwofbsdvt +rnhninezxbrlmnlczqnneightsix9one +ghvqdxkqqfthree17 +dthreeseven2 +rkxfthree7nmfive6 +6vhnh +13brdgbrdsvthreethreerttfkr +ninelgfdc7 +88z9vzscqthkgnhmztjnhthreeseven +1nine3mtgrfive8nine1 +thh5fivezfmtlsnvtdkfour34 +26six6cbjdssevenq2tl +gxxnhsxqvjcvssrbrhbst6sixvcchxstbpb1ppqdbx +vninexhkjkmzvhfpvcd7ninezzldthree +2twozknrxvcsj +3193spfourxcbdnf +84six4vc1eightsix +zljb46four6six +sixfive2seven1 +1fbmq9fourmhbzzkhctp6ninenine +onefourtworckjqzhqseven5seven +five973knlxmtmdone8prtqlsltwo +2ncgbgpq +3eightthreepknbcs58three6 +6fivesrgqxhnzfouroneqpmgpmzgfoureight +mphrj33five +8sixfives26sdscdjtpchmh +four64mtlxmnsjbtdkpmf4 +onefivenine9nine81two +vfc9nqttbmbdkonegclxcgbxkx87t +sqnzdrcs8sevensix6sixdjcmk6 +7npppqmrmblzjqckk8fourbpxlbtwonine +nbkklkvpl2smlqbh +37eighttwo17fh77 +eight7ninekkbvtwo +eight18cmzzdpgl5 +sixdc17nine9ghzpdpnxcbxvztcrd +fourfivelrmch54 +jbqbpzxbbdfiveeight9jnzfdh5xfmhhrkrkds +146two6fourclmcllhl +222dqgtptqqn +gvhninesevenfiveonefcvnlmfcvjvf5 +9xgljlphcxeightfivehpdlfrmd1fmqhrnvbzboneightjd +8sf3five6eight +zrprbc8 +gqb6sixninerpsrpnlldteightgn +2jdlxzk +hfrbqn4zbpxqb81tlfxgxdvzz91 +qtdnxgmjjstlc1nndsnbbcdm6nine +z7twonezp +two17sevenljskthntjzxpkjrkc +fivelvfive948 +sninehxqlkmv7oneonedbdvztzgh8 +2fourxcrkrcvn +clh4four5htj +hdkx4eighteightsix1kgtbb +nlbsqhkltvmzs2njschfbmsl3fivensztjtwobxkfn +fnrg3837five +vxcldjmjxxcqntqcqnninefivestbbjvptfvkbr9onetwo +4six7two +8five5sevenslfqtblfiveone +26ninemhvqkjgcvflplncfsixtwo +7eight523 +9fiveplfdp1qhqhj15t +three3eightrzvccr4h +9vhmkkjfhtfjtwotwotkfvlhvs +vxoneightczdfl4 +3one2 +threeeightfive2four +gksfxtb4 +1jjgdldklznbktwo59 +761sxvprrzj2kxsmlmtpbqseven +681q +84ctsbf1six +fivetwomfgplcfgfive7one1vgbz +rfnqnnmsdcj6foureightfjfkphqpktwo +9vntpmfsevensevenfour +7zvchbn6two9five +fourseven7 +2lvtkkbhtjeightfour89 +5nine5threemgsd +933nxone5threeone +2dtbbmghgxvkmtvnlgsxjlgbc +1mcrlzhvzrc2 +ftwonegsndgxmbzn6one +916vfvzvh8twolvhvlc34 +dtk7eight6c6 +kbhjg6qkdgh8rqlmstq4 +eightseven8 +bhlhcphznb92two +q8d +375sevenvhrhkbtbvncmqqmpxdhqzzggvr +9onefour1nhmjb +hqckpzrvgmgqjmvsrjhqx8twodgxkbh +5grdsbtp6onezrkdvpdqt2 +tdgkr4 +foureight24 +ktds45zvjd +eighttwo58lldklbmxn91fvlqllnxl +threefive3bdmfbrhfklhxjvdgjxbp1 +hqpfgvk56oneone8 +two32fivetwo1nklfhjfffthree +77jggmjkbqone +6fckfqeight +fivetwo8 +7five7threethreeb +twosvbzfmv1fourtwoeightsixfive +ninehninebgjnknth5bhzqlvthree6 +onefrdv3one1 +five35 +four3three3six9four55 +xbssqpvjnine9six9threefivetwomjdvmpxrh +ctroneighttwofive3npxgbhfsix1rjnl +8ckbzlmsbfxdn +51gckxqqbnkntmvx1ltfmdvnlcjnine +eight7gkql5 +sixjghxscppnfive23284 +eight7pgqxvsix +46eightrjhgdmvf5 +four4bmjzzjqp1rv523twonevm +3sixseven81oneeightwocr +sixmmnqkrfplg7ztrpsixone4six +1sixfive5nhrq9 +six8threeoneckbvqc9mzhb6nine +33sixdfzmds12jcvfour6 +1cdlflvqhrkqpktdnnsx7six8eight7 +8four18 +tpfourvblonez8six +fourone2smjpvclnine +99zdtdpbbvhnninefourvzfmzbscdldhxtcjfh +fzjeightwoeightnineseven6 +twonine2 +fourseven1eight +2x3one +qbjc1jtnbpdbr2six3 +sglmt84five5nine +sixnljjqh4foursix +4nxjgs79six +lhkpzgzjr3z7 +onefourflllxbtkpvgfive2 +sixrdr1twoeight165 +1dxvjdhzb76915 +44pxzzttvdc185txvrpxq +4fourfgllhzfz +nxssptkdldkpchnseven9522nine +nine7fivefivefffvqpvsqzsvnvlzfvfs2seven +bzphzhgf2xrlqjgonefour3bclmhtlzbmddrq +vsxf7eightzzndgfourfour +rqbhb14eightthreethreevkjzhjlkcmfive +sbkrlm3nine +zkzlqfbzscndtlmn14four9bsscd +six33 +1gbcgnpfnseven7plppdqone3smljtjlkhj +9jsmdjshtzm92stx9onesd +51four4two3one1 +bxkpcpcntkflxccsixseven1threengtrrp +4dsdllkqnpxglbseight +7threetd3onefour +3vcnzndxfhfzvncfivefllrqvndtx964x +nineeight1eightgqnzfhqkzgvfvctwo1 +6fourthreeseveneight +eighteighttrhtplssvjnnkkreight4sixoneseven +43hqrtctwotwo +kcxfvhjksix3six2jbkrlmtwoseven +43sevenpvqh9eight7xcbvnckrkshdx +sixfive3745three +hmxfmzqdpfzjjzdxsix8472qcpbrsgx3 +threelnzgs96five1 +1dftdbtgjrpfive3cztvmxkcxh +pmrfive4jxfxq1 +eightclrzz981492 +mscl2eight3 +twovb8four7sevenfourkmzpdmpgxj +59onefourxnmptgtcone +6gsvxlbqspvzpsq +eightthreesixtworcmpjkfvnsevenseven1six +ghmflkhprkthsix9 +441fourfcvxonefourhg5 +four795seven +tone11 +22seven9two +5seventwo2 +fiveone6h +936sevensixnine1lkp +62kvhcg +six19 +td25 +9two2four4fourmeight +one6twosevencrthreeseven97 +1kttqbqkzvvr7265six +65rzmfpfqjtzb11m1eight +seven1rrhpxjqtp +plktlvxkpkndhx66fivefivexkh +tttwonefournine9oneonesplmp5d +gkbl1fbn3two97onetwo +1seventqngll +dqfiverscjjrk7 +4sixfour4onethreecvbj +24x6qhgtsxtrfh +h6 +fourfour3three +8hrdbnvxgndthhpmrgm +ggzjfour8pxdlpx +rnsixnine9fivensxfzzgzlseven +sqzseven7 +rcpkzht5 +jxhtrkzl7eight3eightn68eight +eightfive24 +kgxv7kclnsscsmqtnmv +foursix2chgckldprp3zqntzscxfc +sixsixfourone3tnbpxbmgqccncgxxnine +oneeightkgsbdthreefivepvrsktvhrnine5s +4vtpzghfsj +7four1lttzxpzcbtqqdthreek +five76 +vlqvvdhhnfzfssvthree3ccsdjhgc3seven +2nine8six +lddxjsczqkd26g5jpvdlfour +1twotwofcl +sltfz55knrfvhhbbeightsevenninesevenfour +27155bvv +dxjzmftwo2vnljlsthree3three +twoqdpzhjhbzksix49dhdfq +three2fivenineqbxkgfivefour +qnpsfq8twoonevsjffive9 +gqvvmhxgx6gdsqmgccrmzrzltwo81szbnbkxt +2one1czgjvtcgxfivenqsfourthreethree +ppcspzrnnssvnht9hdfoursix +mmqrzdkmt7sjqgsrq9rhxpgpsixgkjflnht +57foursixfive4fourfive +tjrfj3qldspjklvdtcb6ninefivejmbntcthree +cgjnhsixsixsixfive7 +eightqdqgjppcfive7fivexznfsmtk +fivefive864scrf +six95five17threeslktfgd +77mrrjzc1cbnkxfkxcdmxsmtwonet +sxmsjccjrseven45 +kjpsn1eightccctxthreevvffseveneighttwo +5twoneqr +3threemvlqpvhdqgtqseight +jqrxrqlz93ninesmppvdhtxk5five8 +threesixsntqreight593nine9 +fouroneznpfive6qmn8 +eightfive3sixxrrjgzlb +gds345twotwotnjrnhjxdz +27nprk7 +eight1three2onefourcfctvmhnqlfour +1fourvjgkpdrsj4kd2ncd +nine85ncsqbrmdtxbtrjxgztq +twonineeightonerdnkjkrbpsbzcpone5 +nine8lkkvxfvlsixseven +49three9 +jqmzthzjjseven5 +seventwo9z7four5twohstlzjx +bzvbvsix7 +2five4 +fourthreesevenfour2nine1fivezspphbmjv +7skjhonejhklktvzjflnineonemmgvnnine +pmgxshqpjhn9qptllp +2nine5 +fourqpzjrtttssthsxsq1jkrlnkk +eight53njhcfhbjfthree3ksgrrj +cgmvkqlcgzgfqxmgkfdzxxnxjgsd6eighttvggmfbdvztwo +onefour8txkkpvfourzbhpsnrzleightseveng +49z2six591one +768five +xgkfonethreexnlcptbgxhnine4fivetwosix +6ghccxxjponelmxeight4 +3ninedlkvcbfmd2ktmjxsgdgr +3threefourxcgnxhkqkjbdzb +49eight44rlhg83gktmtm +fnbnnpvcthrsjxnqdn9 +ldrfhknine3394lgvseightwoj +zmpsc3lzlkmqjc5eightthree +llpmmfsmt8llknhrn +onedvc3sixxx9four +148eightq6 +95one9sevenfourfour79 +one9eight78gnrthxbn +95xzzlpjzqdtonezfntwo6sixf +eight1sevenn8bgnmnxbmdk +1sixseventhree2 +twogjprzznd9sixsevencpfbh1 +gnbtwomtltppkxxtwonlfxsbzjtt4bjlfxlqhlx +three5oneoneqd3bcjgl +pzngtc2four4811 +nnlqscgg8nine7vst4three +fourcdqc7vvqhpgqlkjsevenfivefiveseven +5sixtwo9sixqmxxgjvjqjtworlzpv +6dkknsmfmnq +2two74five7 +four3vvfskp +qqvpdttrfiveseven6 +tbgeight8eightsix976 +sevenninetwo3jdone +three6seven7nine82 +fxffmkjn2sevensix +5xzbf4bjqfrfourpjhscxz +5eighttwoeight7fivex1bnfpr +1j3262 +two1fvxchkcdtqctph +vgnrqn4three +plzrk3tmqpxnhpkq6four +four5eightone6threedbnjkvjvzxl +bxcqcdnjjsz66gnxbhcct2nfhqlbs +twovvqb9pxrxkmflzqeight +86 +eight9eightsevenone2 +dclk16seven +lzs15four +265ninetzpnbxzllkq +ttldqsnineffpplcxmbvknkmtdbzlsix7sbkvqhn77 +eightgxzcjvgmtgzc9gndqxbxnsktvp +mpqxldjnfive1pzvxbqqtwonine +gzbczdrqkmtm3lzrhnf +mlbsfqvrrtcrvhjjbs5 +fiveljrcn27 +bvnxlsfmv6eightnine3rhsb +five5five +eight31zztkhrznmkbx2kvzl4eight +fvccqgfzsqfour453125frz +xxf5threefourtq58 +stvfjpj1ggnzgcfzldd2hbxmbgtftpskbtqmgv +11cbcps6 +dltxch6onenzsmqbfn4onezkdntjzpc4 +4eightthreej7lpqbvzz +sevenlgonexmrmtfhqpfourp7 +hjjdgtldrfivednsfdnmn24vtqgxk +41tnjbxk2gghb +2eightwotg +eightkvhkzfivesixtcnpsxssvveight2 +59dnmmpone6mzqlnf8dvnone +kfvqrgv87trlninedf +85bnxlhdrmjt +zvzxt4pzlnbb +jfour6lpvvvbdn76tbblfqtwo +lnqpscgkone1 +mcnfzmvzkxp1 +threeseven9onepvqhgdxcxmhtkxxvlhqrnine +sixrzrjcmbpppcvf1bvbhblrmz +6tzthree7sevenlm9 +four3gkqrmpgnjltwo +threetctttrh3 +ctcfljkgm7bcphzxzjj7sb43zdkvkddktwo +sixzjkxlfourhqtwonbslgpt9vljz1 +sgz5 +vrrfjbjpsevenzbqcnthreelhxjqmdd2 +sfmjnbnnpvthreedbsh7six5 +twovdjqdtrxg5 +nineeight7five +4xlpdvlvonekqmqvcqjsevennsd +fiveblbxxjcbhxvnkfd9one7twoninebj +xdxp54sixseventwo +onefive7 +ppgsqgjfourfourfivegtbrlkdvs1jl +twotwoeight6sqlmffdm2three +cvszcvq8eight +79three +44fivembtdfivetwones +zqkthreefoureightthreethree2five +74twotwo +six6fnjz1plxb19 +mkfj72nine +seven1nine5fourqsgrj +5fntdgbzkjfhxlqrzcq7 +six9lgddrhjc9 +1zfzp7 +2lmncxvxbbsix7jbjrjsnvx1nine +6eightseven3 +5vsqhnone +xoneight3j +1gxvbbhfdmsthxgrvnm +sixthreeone13 +2three8bzbbd +3dsix1 +24kmxnlpqxgpsevenfoursixfour +fqpzqphmczcvlf2mxqvxnfqxthreeone +eight789eightnhsh67 +zznxlmhgr3eight +beightwolgnb4997fgx35dt +four1dsgpfzltwo57threefivetwo +xnjjvmlkkgsht99 +1sixhhqkx9 +eightdhmgqjflthone44eight +9ftzbdsdkd9plrrtwo +vhbvd8h +txxonemsfshdrpc15onefive1four +qgbd4eightrqxlznbjqxmxgmbrnvh7jkd +eighteighttwofive5jsqkgm +89hn +3lzfjpcthreeonenine +hkpc2sixdfldx1 +3two72jbxttzfcv +mmkjmmlvcxxvtwo25nine2 +8751gphkmsvsjhvkzfc +one8kmcktvzgdninegkl +twokpxphkbjctqdcvf63one3prfive +twotsxhbppfjcpkdfourfiveseven8sixn +3fouronebnclssixfour6eight +cmdgcsix1 +2eighttdqsjdrtwolmvpxqgxhd5five +one7ninefivesevenqvpf5xmccsseven +2n7xbptnkxzcninedhhpdcsqkc +5n +1kfv4821 +pslpmthreethreeone29tlmgj +sixsevenlhn1 +nine9twoqrdgdxxfsevenmjseven +rkrdlnjknine62 +f3 +6zzrfxdxseventhree +265one +seven3lbcvjxqhhdpzkttqsixjzzjjbclfq1fiveeightwojx +seightwoone8qxcfgszninesvfcnxc68 +strqnb5eightbpnkcjdz6 +fiveninebtpbpjqbgx2bmjrgmprnd +sixgtxr2fourrdkjg +fivebxsevensixone872dlx diff --git a/one/src/main.rs b/one/src/main.rs new file mode 100644 index 0000000..17a883c --- /dev/null +++ b/one/src/main.rs @@ -0,0 +1,24 @@ +use std::{ + fs::File, + io::{BufRead, BufReader}, +}; + +use regex::Regex; + +fn main() { + let input_file = File::open("input.txt").unwrap(); + let reader = BufReader::new(input_file); + let regexp = Regex::new(r"[a-zA-z]").unwrap(); + + let mut sum = 0; + for line in reader.lines() { + if let Ok(line) = line { + let nums = regexp.replace_all(&line, "").to_string(); + let str = nums.chars().nth(0).unwrap().to_string() + + nums.chars().last().unwrap().to_string().as_str(); + sum += str.parse::().unwrap(); + } + } + + println!("{}", sum); +} diff --git a/two/.gitignore b/two/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/two/.gitignore @@ -0,0 +1 @@ +/target diff --git a/two/Cargo.lock b/two/Cargo.lock new file mode 100644 index 0000000..28cda38 --- /dev/null +++ b/two/Cargo.lock @@ -0,0 +1,54 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + +[[package]] +name = "memchr" +version = "2.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" + +[[package]] +name = "regex" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "two" +version = "0.1.0" +dependencies = [ + "regex", +] diff --git a/two/Cargo.toml b/two/Cargo.toml new file mode 100644 index 0000000..d25b504 --- /dev/null +++ b/two/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "two" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +regex = "1.10.2" diff --git a/two/input.txt b/two/input.txt new file mode 100644 index 0000000..72084d0 --- /dev/null +++ b/two/input.txt @@ -0,0 +1,100 @@ +Game 1: 7 blue, 4 red, 11 green; 2 red, 2 blue, 7 green; 2 red, 13 blue, 8 green; 18 blue, 7 green, 5 red +Game 2: 3 green, 4 red, 4 blue; 6 red, 4 green, 4 blue; 2 blue, 4 green, 3 red +Game 3: 1 red, 2 green, 3 blue; 1 red, 2 green; 2 green, 3 red; 1 blue, 2 red +Game 4: 1 red, 15 green; 1 green, 2 blue; 12 green, 1 red, 2 blue; 14 green; 2 green, 1 blue, 2 red +Game 5: 8 red; 7 red; 11 red, 4 green; 1 blue, 8 red; 6 red, 2 green, 1 blue; 8 green, 13 red, 1 blue +Game 6: 3 blue, 2 red, 6 green; 2 red, 8 green, 1 blue; 1 red, 3 blue +Game 7: 5 green, 1 red, 1 blue; 6 blue, 12 red; 6 red, 7 green; 3 green, 1 blue +Game 8: 10 red, 6 green; 4 blue, 6 green, 5 red; 8 green, 5 red, 5 blue; 2 red, 4 blue +Game 9: 11 blue, 13 red, 3 green; 13 red, 1 green, 6 blue; 8 blue, 4 green, 5 red; 16 red, 7 green, 10 blue; 16 red, 5 green, 6 blue; 17 red, 6 blue +Game 10: 16 blue, 8 green; 2 red, 4 green, 1 blue; 15 blue; 4 red, 5 green, 4 blue +Game 11: 3 blue, 8 red, 10 green; 10 red, 6 green; 1 red, 1 green; 13 red, 1 green, 1 blue; 3 green, 7 red; 2 blue, 6 green, 2 red +Game 12: 1 red, 10 green; 4 red, 6 green, 1 blue; 9 green, 1 blue, 7 red; 1 blue, 13 green, 2 red; 2 blue, 5 red, 11 green +Game 13: 1 red, 5 blue; 1 red, 6 green; 2 blue, 1 red; 2 blue, 1 red, 2 green; 5 green, 2 blue +Game 14: 4 green; 8 blue, 1 red, 2 green; 7 red, 2 green, 4 blue; 4 blue, 7 green; 7 blue, 2 green, 1 red; 7 blue, 5 red +Game 15: 10 green, 3 red; 8 blue, 14 green, 3 red; 4 red, 1 green, 12 blue +Game 16: 8 red, 4 blue, 6 green; 14 blue, 9 red, 10 green; 1 red, 5 blue, 8 green; 14 blue, 11 green, 3 red +Game 17: 20 blue, 5 red, 4 green; 3 red, 14 blue; 4 red, 4 blue, 4 green; 12 blue, 5 red, 3 green +Game 18: 7 blue, 8 red; 1 blue, 2 red; 1 green, 2 blue +Game 19: 14 green, 4 blue; 6 green; 12 green, 5 blue; 12 green, 1 red, 1 blue; 4 blue, 10 green +Game 20: 3 green, 4 blue, 4 red; 13 blue, 1 red, 2 green; 13 blue, 9 green, 9 red +Game 21: 4 green, 2 blue, 2 red; 3 green, 2 blue; 1 blue, 5 green; 1 blue, 2 red, 3 green; 1 green, 1 blue, 2 red; 6 blue, 1 green +Game 22: 4 red, 17 green; 15 green, 3 blue, 2 red; 4 blue, 7 red, 11 green; 16 green, 4 red; 3 blue, 2 red +Game 23: 19 green, 2 blue, 3 red; 1 red, 2 blue, 2 green; 2 blue, 10 green, 11 red +Game 24: 1 red, 3 blue; 2 blue; 1 green, 1 red, 3 blue; 1 red, 1 green +Game 25: 12 green, 2 red, 10 blue; 6 green, 3 red; 3 green, 18 blue, 3 red; 17 green, 3 red, 18 blue +Game 26: 4 red, 12 blue, 5 green; 3 green, 5 red, 1 blue; 6 blue, 4 green, 1 red; 6 blue, 7 green; 3 green, 5 red, 2 blue; 1 green, 2 blue, 9 red +Game 27: 1 red, 9 green; 3 green; 9 green, 2 blue, 1 red; 10 green, 1 blue; 1 red, 5 green, 3 blue +Game 28: 10 red, 8 green; 2 blue, 4 green, 7 red; 2 green, 9 red, 1 blue +Game 29: 5 blue, 5 green, 3 red; 1 green, 2 blue, 3 red; 2 green, 3 blue, 5 red; 3 red, 11 blue +Game 30: 11 red, 5 green; 4 blue, 3 green, 5 red; 6 blue, 3 green, 5 red +Game 31: 2 blue, 8 green, 14 red; 9 green; 1 red, 1 blue, 4 green; 2 green, 10 red; 1 red, 10 green, 2 blue; 8 green, 14 red +Game 32: 14 green, 6 red, 6 blue; 1 red, 2 blue, 15 green; 2 red, 18 green, 1 blue +Game 33: 16 green, 4 red; 18 green, 3 red; 5 red, 10 green; 5 red, 19 green; 11 green, 4 red; 11 red, 1 blue, 2 green +Game 34: 1 blue, 11 red; 5 red, 4 green; 4 green, 1 blue, 12 red; 2 blue, 1 green, 7 red; 3 green, 1 blue, 12 red +Game 35: 5 red, 1 blue; 1 blue, 1 red; 2 blue, 2 green, 15 red; 7 red, 2 green; 3 blue, 1 green, 1 red; 16 red, 3 blue, 1 green +Game 36: 10 green, 16 red; 2 blue, 14 green, 6 red; 1 blue, 8 green, 12 red +Game 37: 17 green, 14 blue; 10 green, 12 blue; 10 blue, 1 red, 8 green +Game 38: 9 blue, 2 green; 5 blue, 1 green, 5 red; 6 blue, 2 green, 7 red; 17 red, 1 green, 7 blue; 1 green, 9 blue, 16 red +Game 39: 2 red, 13 blue, 10 green; 5 blue, 15 green, 1 red; 13 blue, 5 green; 3 red, 6 blue, 2 green; 17 green, 1 blue, 4 red; 4 red, 1 blue, 11 green +Game 40: 4 green, 12 blue; 5 red, 13 blue, 1 green; 4 green, 7 red; 7 blue, 2 green +Game 41: 3 red, 1 green; 10 green, 4 blue, 5 red; 8 blue, 5 red +Game 42: 8 blue, 12 red, 5 green; 8 red, 5 green, 4 blue; 3 green, 13 red; 8 blue, 16 red; 12 red, 3 green, 1 blue; 2 blue, 2 green, 6 red +Game 43: 5 blue, 4 red; 10 red, 6 blue; 12 red, 2 blue, 1 green; 7 blue, 12 red, 1 green +Game 44: 11 blue, 5 red; 2 red, 13 green, 5 blue; 7 red, 7 blue, 11 green +Game 45: 7 red, 6 blue; 5 blue, 6 green; 5 green, 5 blue, 7 red; 4 red, 9 green, 12 blue; 9 blue, 12 green, 1 red +Game 46: 2 green, 7 blue, 20 red; 18 green, 2 blue; 8 blue, 1 red, 3 green; 6 green, 1 blue; 2 red, 6 blue, 4 green +Game 47: 6 red, 6 blue; 14 blue, 7 green, 2 red; 8 blue, 3 red +Game 48: 1 red, 5 blue; 3 blue, 15 green, 2 red; 6 blue, 1 red, 13 green; 6 green, 4 blue, 3 red; 11 green, 3 blue +Game 49: 1 green, 15 blue, 3 red; 15 green, 6 blue; 12 green, 2 red, 8 blue; 3 green, 16 blue +Game 50: 8 blue, 7 red, 1 green; 6 blue, 1 green, 2 red; 3 red, 7 blue; 4 blue, 6 red, 1 green +Game 51: 2 red, 5 blue; 2 red, 10 green; 11 green, 1 blue; 9 green, 1 blue, 2 red; 5 blue, 11 green; 1 red, 8 green, 1 blue +Game 52: 1 green, 1 red, 15 blue; 17 blue, 1 red; 5 red, 1 green; 19 blue, 6 red, 3 green; 5 blue, 1 green +Game 53: 1 blue, 12 red, 6 green; 3 red, 7 green, 3 blue; 2 blue, 7 red, 5 green; 4 red, 3 blue, 19 green; 10 red, 12 green, 2 blue; 5 blue, 7 red, 14 green +Game 54: 12 green, 1 red, 4 blue; 3 blue, 5 red, 8 green; 9 green, 6 blue; 3 green, 2 red, 11 blue; 3 green, 10 blue, 7 red; 2 red, 3 green, 4 blue +Game 55: 5 red, 3 blue; 4 blue, 6 green; 10 blue, 1 green; 7 green, 4 red, 14 blue; 2 red, 9 blue, 10 green; 5 red, 10 blue, 10 green +Game 56: 3 green, 11 blue; 4 blue, 10 green, 8 red; 2 blue, 5 green, 2 red; 1 blue, 1 green, 8 red; 5 green, 7 red, 3 blue +Game 57: 2 green, 2 blue, 3 red; 8 red, 5 green, 2 blue; 16 red, 12 blue, 7 green; 13 blue, 6 red, 2 green; 12 red, 1 green +Game 58: 2 green, 3 blue, 8 red; 3 green, 4 blue, 7 red; 2 blue, 11 red, 4 green; 4 green, 1 blue, 2 red; 3 green, 3 red, 2 blue +Game 59: 10 red, 6 blue, 2 green; 2 green, 6 blue, 14 red; 3 green, 11 red, 7 blue; 1 blue, 1 green +Game 60: 5 blue, 10 red; 4 blue, 12 red; 2 green, 3 red, 4 blue +Game 61: 4 blue, 1 green; 10 blue, 2 red; 6 blue, 1 red; 1 green, 7 red; 5 blue, 5 red +Game 62: 6 blue, 7 red, 1 green; 7 blue, 7 green, 15 red; 14 green, 16 red, 2 blue; 2 blue, 17 red; 4 red, 11 green, 6 blue; 13 green, 16 red, 5 blue +Game 63: 4 red, 13 green, 1 blue; 2 green, 5 blue, 10 red; 3 green, 8 red; 1 blue, 3 red, 11 green; 1 red, 7 blue +Game 64: 12 green, 1 blue; 8 red, 1 blue, 10 green; 11 green, 1 blue, 3 red; 10 green, 2 red, 1 blue; 1 blue, 9 green, 8 red +Game 65: 5 green, 2 red; 7 blue, 5 red, 10 green; 9 green, 8 blue; 3 blue, 4 red, 8 green; 11 green, 6 red, 16 blue +Game 66: 8 green, 1 red, 4 blue; 10 green, 5 blue, 7 red; 5 blue, 3 red, 6 green; 4 blue, 12 green, 6 red; 16 green, 3 red; 16 green, 7 red, 4 blue +Game 67: 6 green; 7 red, 1 green, 5 blue; 10 red, 13 green, 3 blue; 8 green, 11 red, 6 blue; 14 red, 5 green, 7 blue +Game 68: 1 red, 8 green, 3 blue; 1 green, 1 red, 1 blue; 1 green, 11 blue, 1 red +Game 69: 2 red, 4 green, 1 blue; 4 blue, 10 green; 4 green, 1 blue, 2 red; 12 green, 5 blue; 6 blue, 3 green +Game 70: 1 blue, 3 green, 2 red; 1 green, 2 blue; 5 green, 1 red; 2 blue, 4 green; 1 red, 5 green +Game 71: 6 blue, 3 red, 12 green; 2 red, 8 green, 3 blue; 8 green, 8 blue; 7 blue, 1 red, 9 green; 2 green, 4 blue, 1 red; 3 red, 7 blue, 8 green +Game 72: 8 red, 7 blue, 6 green; 2 red, 8 blue, 7 green; 2 red, 5 blue, 1 green; 4 green, 6 blue, 1 red; 11 green, 13 red, 3 blue; 8 green, 11 red, 2 blue +Game 73: 7 blue, 17 red, 4 green; 1 red, 4 green, 2 blue; 3 red, 4 blue, 4 green; 5 blue, 5 red; 6 red, 2 blue; 11 red, 1 green, 4 blue +Game 74: 3 red, 2 green; 4 red, 12 blue, 4 green; 7 red, 6 blue, 10 green +Game 75: 6 blue, 7 green; 8 green, 9 blue, 1 red; 6 red, 4 blue, 9 green; 10 red, 9 blue, 4 green; 6 red, 2 blue, 1 green; 7 green +Game 76: 10 red, 8 green; 2 red, 2 blue, 5 green; 1 red, 1 blue, 1 green; 9 red, 11 green, 2 blue; 2 blue, 9 green, 3 red; 6 green, 14 red +Game 77: 9 blue, 1 red, 3 green; 8 blue, 17 green, 4 red; 5 green, 1 blue, 2 red; 6 green, 1 red, 9 blue; 4 green, 10 red; 9 red, 3 blue +Game 78: 5 green, 10 blue; 2 green, 5 blue, 11 red; 1 red, 1 green, 6 blue; 1 red, 8 blue, 4 green +Game 79: 3 green, 1 blue, 2 red; 8 green, 1 blue, 2 red; 2 blue, 1 red, 11 green +Game 80: 12 blue, 3 green; 6 red, 4 green, 13 blue; 4 blue, 8 red; 3 green, 4 blue +Game 81: 1 green, 5 blue; 1 green, 3 blue, 1 red; 1 blue, 1 red, 3 green; 6 blue, 5 green +Game 82: 2 green, 1 blue; 10 blue, 1 red, 6 green; 4 green, 20 blue, 1 red; 20 blue, 2 green, 1 red +Game 83: 2 green, 9 blue, 10 red; 12 red, 11 blue, 4 green; 11 blue, 8 red, 3 green; 17 green, 4 blue; 12 green, 4 red, 6 blue; 1 red, 11 green, 8 blue +Game 84: 7 green, 15 red, 15 blue; 4 blue, 3 green, 18 red; 2 blue, 1 red, 2 green; 8 blue, 19 red, 5 green; 11 blue, 3 red; 9 red, 2 blue +Game 85: 14 green, 3 red, 16 blue; 3 blue, 6 green; 12 green, 6 blue, 2 red +Game 86: 5 red, 6 green; 9 red, 4 green; 7 green, 1 blue, 2 red +Game 87: 10 blue, 7 red, 1 green; 12 blue, 14 red; 7 blue, 7 red +Game 88: 5 red, 10 green, 5 blue; 10 green, 2 red, 8 blue; 2 red, 14 green, 4 blue +Game 89: 1 blue, 6 red, 12 green; 9 red, 13 green, 3 blue; 11 green, 6 red, 3 blue +Game 90: 1 green, 8 blue, 10 red; 10 blue, 7 green; 6 blue, 15 red, 1 green; 1 blue, 16 red, 4 green +Game 91: 8 red, 9 green, 2 blue; 2 red, 15 blue, 2 green; 15 blue, 1 red, 5 green; 1 green, 6 red, 10 blue +Game 92: 10 blue, 4 red; 9 blue, 3 red, 7 green; 8 blue, 16 green, 3 red; 16 green, 16 blue +Game 93: 1 blue, 2 green, 1 red; 4 red, 7 green, 12 blue; 6 green, 3 blue, 4 red; 8 blue, 4 red, 12 green; 5 red, 8 green; 1 red, 18 blue, 10 green +Game 94: 1 blue, 5 red, 6 green; 7 red, 6 green, 1 blue; 8 red, 11 green; 12 green, 7 red, 1 blue; 7 red, 8 green +Game 95: 10 red, 7 green; 2 green, 1 blue, 10 red; 6 green, 5 red, 1 blue +Game 96: 3 blue, 12 red, 3 green; 13 red, 9 blue; 2 green, 5 red, 13 blue; 2 red, 18 blue, 4 green; 6 red, 6 blue, 7 green; 3 green, 15 red, 18 blue +Game 97: 4 red, 3 green; 2 blue, 4 red, 5 green; 3 red, 3 green +Game 98: 2 red, 19 blue; 2 blue; 11 blue, 2 red; 3 green, 5 blue, 1 red; 2 red, 1 blue; 17 blue +Game 99: 2 red, 16 blue, 1 green; 2 green, 12 blue, 6 red; 1 red, 3 green, 3 blue; 8 red, 1 green; 2 red, 9 blue; 1 green, 7 red, 9 blue +Game 100: 8 green, 3 red; 7 green, 4 red; 1 red, 7 green, 2 blue; 1 green, 2 red diff --git a/two/src/main.rs b/two/src/main.rs new file mode 100644 index 0000000..6a329a4 --- /dev/null +++ b/two/src/main.rs @@ -0,0 +1,110 @@ +use std::{ + fs::File, + io::{BufRead, BufReader}, +}; + +use regex::Regex; + +const MAX_RED_CUBES: i32 = 12; +const MAX_GREEN_CUBES: i32 = 13; +const MAX_BLUE_CUBES: i32 = 14; + +/// Returns ([red], [green], [blue]) +fn get_subset_values(subset: String) -> (i32, i32, i32) { + let regexp = Regex::new(r"(\d* [a-z]{0,6})*").unwrap(); + let mut strings = regexp + .find_iter(&subset) + .map(|m| m.as_str().trim()) + .collect::>(); + + let red = strings + .iter() + .find(|s| s.ends_with("red")) + .unwrap_or(&"0 red") + .split(" ") + .nth(0) + .unwrap() + .parse::() + .unwrap_or(0); + let green = strings + .iter() + .find(|s| s.ends_with("green")) + .unwrap_or(&"0 green") + .split(" ") + .nth(0) + .unwrap() + .parse::() + .unwrap_or(0); + let blue = strings + .iter() + .find(|s| s.ends_with("blue")) + .unwrap_or(&"0 blue") + .split(" ") + .nth(0) + .unwrap() + .parse::() + .unwrap_or(0); + + (red, green, blue) +} + +/// Returns (Some([id]), [lowest cubes]) if OK +fn validate_game(game_results: String) -> (Option, (i32, i32, i32)) { + let regexp = Regex::new(r"Game (\d*): (.*)").unwrap(); + let result = regexp.captures(&game_results).unwrap(); + let id: i32 = result.get(1).unwrap().as_str().parse().unwrap(); + let subsets: Vec<(i32, i32, i32)> = result + .get(2) + .unwrap() + .as_str() + .split(";") + .map(|s| get_subset_values(s.to_string())) + .collect(); + + let mut lowest = (0, 0, 0); + for subset in &subsets { + if subset.0 > lowest.0 { + lowest.0 = subset.0 + } + if subset.1 > lowest.1 { + lowest.1 = subset.1 + } + if subset.2 > lowest.2 { + lowest.2 = subset.2 + } + } + + for subset in &subsets { + if subset.0 > MAX_RED_CUBES { + return (None, lowest); + } + if subset.1 > MAX_GREEN_CUBES { + return (None, lowest); + } + if subset.2 > MAX_BLUE_CUBES { + return (None, lowest); + } + } + + (Some(id), lowest) +} + +fn main() { + let input_file = File::open("input.txt").unwrap(); + let reader = BufReader::new(input_file); + + let mut sum = 0; + let mut sum2 = 0; + for line in reader.lines() { + if let Ok(line) = line { + if let (id, lowest) = validate_game(line) { + if let Some(id) = id { + sum += id; + } + sum2 += lowest.0 * lowest.1 * lowest.2; + } + } + } + + println!("ids: {sum}, powers: {sum2}"); +}