From dcb65c8da24365976c7b2278e841186ce522d363 Mon Sep 17 00:00:00 2001 From: Andy Teijelo Date: Sat, 2 Dec 2023 00:43:42 -0500 Subject: [PATCH] day 2 part 1 --- example.txt | 12 +- input.txt | 1100 +++++---------------------------------------------- src/main.rs | 61 ++- 3 files changed, 130 insertions(+), 1043 deletions(-) diff --git a/example.txt b/example.txt index 41aa89c..295c36d 100644 --- a/example.txt +++ b/example.txt @@ -1,7 +1,5 @@ -two1nine -eightwothree -abcone2threexyz -xtwone3four -4nineeightseven2 -zoneight234 -7pqrstsixteen +Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green +Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue +Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red +Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red +Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green diff --git a/input.txt b/input.txt index fd6e74f..4620a0b 100644 --- a/input.txt +++ b/input.txt @@ -1,1000 +1,100 @@ -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 +Game 1: 2 blue, 3 red; 3 green, 3 blue, 6 red; 4 blue, 6 red; 2 green, 2 blue, 9 red; 2 red, 4 blue +Game 2: 4 red, 1 green; 3 red; 13 green, 5 red, 3 blue; 3 green, 2 red; 3 blue, 5 red, 3 green; 2 red, 3 blue, 12 green +Game 3: 4 red, 1 green, 1 blue; 1 red, 1 blue; 6 red, 1 green; 6 red, 3 blue, 1 green; 4 red +Game 4: 4 blue, 12 red, 4 green; 6 green, 3 blue, 19 red; 3 blue, 2 red, 2 green +Game 5: 1 red, 5 blue, 16 green; 1 red, 6 green, 3 blue; 2 red, 12 blue; 17 blue, 3 green; 7 green, 2 red, 6 blue +Game 6: 3 green, 1 blue, 5 red; 5 green, 5 red; 2 green, 2 blue, 3 red; 5 green, 2 red; 3 green, 6 red, 3 blue; 5 green, 4 red +Game 7: 15 blue, 1 red, 6 green; 4 blue, 7 green, 2 red; 14 blue, 5 green, 2 red +Game 8: 6 blue, 3 green, 10 red; 2 blue, 1 green, 5 red; 6 blue, 3 green, 12 red; 11 red, 1 green, 1 blue; 5 blue, 14 red, 3 green; 3 red +Game 9: 15 red, 3 blue; 1 blue, 16 red; 1 red, 3 blue; 1 blue, 1 green, 9 red +Game 10: 1 red; 1 blue, 7 green; 1 green, 5 blue; 3 blue, 3 green; 1 green +Game 11: 19 blue, 13 green; 19 blue, 2 green; 10 blue, 3 red, 12 green; 11 blue, 1 red, 6 green +Game 12: 7 green, 5 blue; 6 green, 3 red, 6 blue; 2 red, 5 blue, 15 green; 2 red, 1 blue, 1 green; 4 red, 4 green, 2 blue; 3 blue, 6 green +Game 13: 9 red, 2 blue, 2 green; 1 blue, 2 red, 15 green; 9 green, 2 blue, 9 red; 5 blue, 8 green, 5 red; 2 blue, 11 green, 5 red +Game 14: 9 blue, 1 red; 10 blue, 4 green, 3 red; 2 red, 6 blue; 4 green, 2 blue, 1 red; 5 green, 2 red, 11 blue; 12 blue, 2 red, 1 green +Game 15: 9 blue, 7 green, 12 red; 9 red, 17 green, 8 blue; 6 red, 4 blue, 4 green; 5 red, 17 green +Game 16: 5 green, 4 red; 3 blue, 3 red, 14 green; 6 red, 5 blue, 12 green +Game 17: 8 blue, 5 green, 2 red; 6 red, 6 blue; 9 red; 5 blue, 2 green, 8 red; 13 red, 4 blue, 4 green; 9 blue, 3 green, 5 red +Game 18: 8 green, 1 red, 2 blue; 4 green, 4 red, 1 blue; 6 blue, 2 red +Game 19: 3 green, 9 blue; 4 blue, 10 red; 6 red, 3 green, 3 blue; 6 red, 4 green, 9 blue +Game 20: 11 green, 3 blue; 6 green; 3 green, 6 blue; 1 red, 5 green; 6 blue, 7 green +Game 21: 1 green, 1 blue, 12 red; 6 red, 2 blue; 5 green, 4 red, 2 blue; 11 red, 8 green, 1 blue +Game 22: 10 red; 1 red, 13 green, 9 blue; 6 blue, 12 red, 12 green; 10 red, 8 blue, 11 green; 2 green, 1 red, 3 blue; 7 red, 1 blue, 8 green +Game 23: 11 red, 15 blue; 10 blue, 16 red, 1 green; 14 blue, 5 red; 1 green, 9 red, 9 blue; 1 red, 7 blue, 3 green; 6 red, 2 green, 3 blue +Game 24: 6 blue, 11 red; 16 green, 2 red, 1 blue; 8 red, 7 blue; 14 blue, 9 green, 9 red; 13 green, 4 red, 8 blue; 2 red, 7 blue, 1 green +Game 25: 2 green, 12 blue, 1 red; 10 blue, 5 red, 5 green; 2 blue, 9 red, 3 green; 5 blue, 4 red, 2 green +Game 26: 7 blue, 6 red, 1 green; 2 blue, 3 green, 12 red; 2 blue, 6 red, 5 green +Game 27: 2 green, 3 red; 4 green; 2 red, 1 blue, 1 green; 2 red, 1 green, 2 blue +Game 28: 11 blue, 1 red, 5 green; 2 blue, 2 red, 4 green; 10 blue, 4 red, 1 green +Game 29: 6 blue, 17 red, 1 green; 8 blue, 4 red; 14 blue, 1 red, 3 green +Game 30: 2 blue, 4 green; 7 green, 1 blue, 1 red; 1 blue, 8 green +Game 31: 15 blue, 9 green, 2 red; 5 green, 4 blue, 1 red; 1 green, 15 red, 7 blue; 5 red, 2 blue +Game 32: 1 blue, 5 red, 3 green; 3 green, 8 red, 1 blue; 5 green, 1 red; 4 green, 3 blue, 15 red; 2 green, 1 blue; 4 blue, 15 red, 4 green +Game 33: 3 red, 10 blue; 4 red, 9 blue; 1 green, 10 blue +Game 34: 3 blue, 1 green, 9 red; 4 green, 2 red, 9 blue; 7 blue, 3 red; 6 blue, 13 red; 4 green, 13 blue, 9 red +Game 35: 14 red, 1 green; 1 red, 2 green, 4 blue; 3 blue, 10 red, 6 green; 5 blue, 6 red, 7 green; 7 blue, 5 red +Game 36: 2 blue, 8 red, 9 green; 9 green, 3 red, 10 blue; 6 red, 8 blue, 1 green; 6 green, 8 red, 4 blue +Game 37: 10 green, 3 red, 6 blue; 2 blue, 9 red, 5 green; 13 green, 9 red, 10 blue; 2 blue, 4 green, 9 red +Game 38: 4 red, 14 blue, 12 green; 6 red, 12 green, 18 blue; 6 green, 1 blue, 1 red +Game 39: 5 red, 1 blue, 3 green; 1 blue, 3 green, 8 red; 15 red, 1 blue, 5 green; 3 green, 5 red; 1 blue, 14 red; 3 green, 1 blue, 12 red +Game 40: 8 green, 4 blue; 5 blue, 7 red, 8 green; 5 blue, 8 green; 6 green, 3 red, 12 blue; 14 blue, 7 green, 2 red; 1 green, 7 red, 5 blue +Game 41: 7 red, 10 green; 10 red, 6 green; 9 red, 7 green, 1 blue; 3 red, 1 blue +Game 42: 3 green, 2 blue, 13 red; 1 blue, 3 red; 11 green, 16 red; 3 green, 1 blue, 16 red; 5 red, 8 green +Game 43: 12 blue, 9 red; 16 blue, 2 red, 7 green; 4 red, 1 blue, 11 green; 15 blue, 4 red, 9 green +Game 44: 17 green, 5 blue, 2 red; 9 green, 11 blue, 1 red; 20 green, 3 blue, 8 red; 2 red, 13 green, 9 blue; 15 green, 12 blue; 4 blue, 7 green, 9 red +Game 45: 5 green; 5 green, 1 red; 3 green, 2 blue; 1 green, 1 blue, 1 red +Game 46: 10 red, 11 green; 16 green, 8 blue, 12 red; 9 green, 9 blue +Game 47: 20 green, 17 red, 1 blue; 16 red, 2 blue, 11 green; 3 blue, 19 red, 1 green; 3 blue, 17 red, 17 green; 12 green, 2 blue, 7 red +Game 48: 1 red, 4 blue, 6 green; 19 green, 1 red, 1 blue; 16 green, 3 blue, 1 red; 3 blue, 17 green; 4 blue, 12 green +Game 49: 13 green, 2 blue, 1 red; 1 green, 8 red, 2 blue; 11 red, 11 green, 3 blue; 7 red, 8 green, 4 blue +Game 50: 11 blue, 1 red, 2 green; 1 green, 10 blue; 1 blue; 6 blue; 1 green, 2 blue +Game 51: 3 red, 3 green, 1 blue; 3 green, 3 red; 10 green, 4 red; 3 red, 2 green +Game 52: 1 red, 4 blue; 1 green, 11 blue; 1 green, 3 red, 6 blue; 4 red, 1 green, 4 blue; 9 blue, 1 green; 10 blue, 1 green +Game 53: 2 blue, 4 green, 1 red; 8 blue, 4 red, 7 green; 9 red, 7 blue, 6 green; 3 red, 7 green, 1 blue; 2 red, 9 blue, 5 green; 1 green, 7 red, 10 blue +Game 54: 1 red, 1 blue, 5 green; 2 red, 1 green, 2 blue; 3 green, 3 blue, 2 red; 4 red; 12 red, 5 green, 2 blue +Game 55: 2 red, 11 blue; 16 green, 7 red, 16 blue; 4 blue, 11 green, 7 red; 8 green, 18 blue, 8 red +Game 56: 2 blue, 2 green, 1 red; 1 red, 1 green; 1 red; 4 green; 1 blue; 1 blue, 7 green +Game 57: 4 blue, 3 green; 16 green, 2 red, 5 blue; 1 red, 13 green, 2 blue; 3 blue, 12 green, 2 red; 2 red, 5 blue, 4 green; 10 green, 2 blue +Game 58: 3 blue, 8 green; 4 green, 3 blue; 7 green, 5 blue, 5 red; 8 green; 3 red, 6 blue, 9 green; 2 red, 10 green, 4 blue +Game 59: 7 blue, 6 green, 5 red; 7 red, 2 blue; 5 red, 11 green, 14 blue; 8 green, 17 red +Game 60: 3 green, 8 blue, 2 red; 4 green, 7 blue, 6 red; 13 blue, 8 green, 2 red; 10 red, 6 blue, 5 green; 11 green, 3 blue, 4 red; 9 red, 5 green, 9 blue +Game 61: 4 red, 18 blue, 13 green; 9 green, 5 red, 3 blue; 4 green, 3 blue, 4 red; 8 red, 4 green, 7 blue; 8 red, 4 blue, 6 green; 10 green, 5 red, 14 blue +Game 62: 12 red, 14 blue, 9 green; 9 blue, 6 red, 4 green; 2 red, 5 blue; 1 red, 12 blue +Game 63: 11 blue, 13 red, 11 green; 4 blue, 9 green; 8 blue, 9 red; 7 red, 11 green, 7 blue +Game 64: 10 blue, 8 red, 12 green; 10 red, 12 blue, 9 green; 3 green, 17 red; 12 green, 15 blue, 16 red; 6 green, 15 blue, 1 red; 9 red, 6 blue, 10 green +Game 65: 7 red, 7 blue; 3 blue, 1 red, 1 green; 3 red, 8 blue +Game 66: 1 blue, 3 red; 10 green, 5 blue; 4 green; 3 red, 11 green; 3 blue, 15 green, 3 red +Game 67: 1 red; 2 blue, 2 green, 1 red; 6 green, 1 blue +Game 68: 7 red, 4 blue; 4 blue, 6 red, 7 green; 2 green, 19 red, 11 blue; 11 green, 9 red +Game 69: 4 blue, 3 green, 1 red; 7 blue, 1 red, 3 green; 5 blue, 1 green; 2 blue, 10 green, 2 red; 2 red, 6 green, 5 blue; 1 red, 4 green, 2 blue +Game 70: 9 blue, 7 red, 6 green; 19 blue, 4 red, 5 green; 6 blue, 7 red, 4 green; 3 blue, 4 red, 2 green +Game 71: 6 green, 12 blue, 4 red; 11 red, 10 green, 11 blue; 3 red, 14 blue, 13 green; 4 blue, 3 green +Game 72: 2 green, 1 blue, 9 red; 10 red, 3 green, 1 blue; 11 red, 2 green; 2 green, 1 blue, 5 red; 1 red, 1 blue, 3 green; 13 red, 4 blue, 1 green +Game 73: 11 green, 6 blue; 7 green, 6 blue, 7 red; 12 green, 8 blue, 11 red; 4 red, 2 blue, 9 green; 4 green, 7 blue, 2 red +Game 74: 3 blue, 7 red; 3 blue, 5 green, 2 red; 5 red, 1 green, 3 blue; 8 green, 2 blue, 11 red; 3 blue, 8 green, 10 red +Game 75: 2 green; 5 blue; 1 blue, 1 red; 1 red, 9 blue, 2 green; 2 blue, 2 green +Game 76: 12 blue, 13 green; 5 red, 11 blue, 9 green; 12 green, 6 red +Game 77: 1 blue, 15 green, 12 red; 15 green, 5 blue; 14 green, 3 blue, 8 red +Game 78: 11 green, 8 blue, 1 red; 9 green, 8 blue, 1 red; 13 green, 5 red, 6 blue; 5 red, 7 green, 20 blue; 10 blue, 5 red +Game 79: 3 blue; 6 blue, 5 red; 4 red, 1 green, 4 blue; 7 blue, 6 red; 7 red, 1 blue; 1 red, 1 blue, 1 green +Game 80: 11 green, 3 red, 8 blue; 2 red, 15 green, 2 blue; 5 green, 8 blue, 2 red; 8 blue, 14 green; 2 blue, 13 green +Game 81: 9 red, 4 green; 7 green, 4 red; 2 red, 4 blue, 6 green; 6 red, 4 blue, 9 green; 1 green, 3 red; 6 green, 1 blue, 8 red +Game 82: 5 blue, 3 red, 3 green; 5 red; 2 red, 3 green, 8 blue +Game 83: 10 green, 1 red, 1 blue; 3 red, 1 green, 1 blue; 4 red, 10 green +Game 84: 16 red, 2 green, 6 blue; 6 red, 3 green, 8 blue; 3 green, 10 red, 5 blue; 4 blue, 3 green; 15 red +Game 85: 3 green, 2 red; 5 green, 4 blue; 5 green, 8 red, 3 blue +Game 86: 7 green, 16 blue, 7 red; 1 green, 12 red, 2 blue; 15 green, 16 blue, 7 red +Game 87: 1 red, 6 green, 5 blue; 2 green, 1 blue; 2 green, 1 red, 1 blue; 5 green, 4 blue +Game 88: 3 green, 3 red, 4 blue; 1 red, 1 green; 6 blue, 9 red, 1 green; 1 green, 11 red, 3 blue; 7 red, 6 blue +Game 89: 2 blue, 3 red, 4 green; 5 red, 7 blue, 14 green; 8 blue, 5 red, 16 green; 2 blue, 5 red, 7 green; 5 green, 9 blue, 1 red +Game 90: 1 blue, 3 red, 7 green; 11 green, 4 red, 1 blue; 1 red, 1 blue, 6 green; 2 blue, 2 green; 8 green, 2 blue; 3 red, 2 blue, 4 green +Game 91: 6 blue, 4 red, 1 green; 8 red, 3 blue, 3 green; 1 green, 2 blue, 5 red; 1 blue, 3 green +Game 92: 8 green, 1 red, 5 blue; 2 green, 7 blue; 11 blue, 5 green, 8 red; 7 blue, 3 red, 4 green +Game 93: 3 green, 1 red, 9 blue; 13 red, 5 blue, 8 green; 5 green, 2 red, 7 blue +Game 94: 4 green, 10 blue, 8 red; 4 red, 10 blue, 2 green; 2 green, 10 blue, 5 red; 5 green, 2 red, 10 blue +Game 95: 5 green, 1 blue; 3 blue, 11 green, 8 red; 8 blue, 2 red, 12 green; 4 green, 4 blue, 4 red +Game 96: 1 blue, 13 green; 8 blue, 3 red, 4 green; 1 red, 3 blue, 10 green +Game 97: 18 green, 4 red; 1 blue, 2 red, 9 green; 6 red, 3 blue, 10 green; 3 blue, 15 green, 4 red +Game 98: 2 blue, 3 green, 6 red; 1 green, 1 blue, 8 red; 8 red, 3 green, 1 blue; 2 blue; 8 red, 2 green, 2 blue +Game 99: 1 green, 2 red, 1 blue; 8 green, 4 blue, 1 red; 7 blue, 1 red, 11 green; 9 green, 3 blue; 1 red, 2 blue; 1 red, 6 blue +Game 100: 7 blue, 9 green, 2 red; 5 red, 9 green; 1 blue, 8 red, 13 green diff --git a/src/main.rs b/src/main.rs index d343834..3682082 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,50 +1,39 @@ use anyhow::Result; use fancy_regex::Regex; -use std::{ - collections::HashMap, - fs::File, - io::{BufRead, BufReader}, -}; +use std::{collections::HashMap, io::stdin}; fn main() -> Result<()> { - let input = File::open("input.txt")?; - let reader = BufReader::new(input); + // let input = File::open("input.txt")?; + // let reader = BufReader::new(input); - let patterns = Regex::new( - r#"on(?=e)|tw(?=o)|thre(?=e)|four|fiv(?=e)|six|seve(?=n)|eigh(?=t)|nin(?=e)|1|2|3|4|5|6|7|8|9"#, - )?; - let num_values = HashMap::from([ - ("on", "1"), - ("tw", "2"), - ("thre", "3"), - ("four", "4"), - ("fiv", "5"), - ("six", "6"), - ("seve", "7"), - ("eigh", "8"), - ("nin", "9"), - ]); + let game_re = Regex::new(r"Game (\d+): (.+)")?; + let cube_re = Regex::new(r"(\d+) (blue|red|green)")?; + let max_colors = HashMap::from([("red", 12), ("green", 13), ("blue", 14)]); let mut sum = 0; - for line in reader.lines() { + for line in stdin().lines() { let line = line?; - let mut nums = vec![]; - for m in patterns.find_iter(&line) { - let m = m?; - let text = m.as_str(); + let c = game_re.captures(&line)?.unwrap(); + let game_number: i32 = c.get(1).unwrap().as_str().parse()?; + let desc = c.get(2).unwrap().as_str(); + println!("game={game_number}"); - let v: &str = match num_values.get(text) { - Some(digit) => digit, - None => text, - }; + let mut valid = true; + for round in desc.split(';') { + for cube in cube_re.captures_iter(round) { + let cube = cube?; + let count: i32 = cube.get(1).unwrap().as_str().parse()?; + let color = cube.get(2).unwrap().as_str(); + println!("count={count} color={color}"); - nums.push(v); + if count > *max_colors.get(&color).unwrap() { + valid = false; + } + } + } + if valid { + sum += game_number; } - let mut value = String::new(); - value.push_str(nums.first().unwrap()); - value.push_str(nums.last().unwrap()); - - sum += value.parse::().unwrap(); } println!("{sum}");