From b595d9ce2f5b847ac97878d9b5a3d2ed05307d44 Mon Sep 17 00:00:00 2001 From: Simon Cambier Date: Sat, 2 Dec 2023 10:03:27 +0100 Subject: [PATCH] day 1 & 2 --- day1.p8 | 1090 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ day2.p8 | 174 +++++++++ 2 files changed, 1264 insertions(+) create mode 100644 day1.p8 create mode 100644 day2.p8 diff --git a/day1.p8 b/day1.p8 new file mode 100644 index 0000000..f6e92af --- /dev/null +++ b/day1.p8 @@ -0,0 +1,1090 @@ +pico-8 cartridge // http://www.pico-8.com +version 41 +__lua__ + +local input = split( + [[7jlncfksix7rjgrpglmn9 +vcgkgxninerqjltdbhqzzpd4nine23 +fx3 +8nrbjbpjpnineseven +7qlfhcsnxn7fpfhjcgr6eightsevenjlpchjtzpztwo +28rzgskgk94ninefive +zdpxcql1eight5 +8two5six37 +9khfphjl71trppsrtwo +lxthkgbbf2jdcssfiveqksvbqvm8four4 +seven9tjcgztctxzzttct +onetljcfh9fivesvgcqnklz9four +4mptgcnzmvvsevenzmjjzhndzdvxmz59bm +1hrqthmr +7eightqmfmsn +jkgdnpzjkzzceighttklsfiveqxgsvxdq4 +hdk28lqhhttjz6one2 +2five524 +363mtk +qlmtpch9eightlzddxs7one +one6five1hxphtl687rllvb +31gdnsxtpnn +sqvbcqlnjhk135 +eightgcdszrsghmmfsevendr2844 +eightthreecdpccfj7 +ljfgt9kvnine175kpnrbttktktf +zjfeightfive9nine44seven4 +sixshbrtr4nmjr +3two54 +26sixbhmmgdcl +drxfnbsdzf3gnxbtmmggvkxrsevenbbzdfxnrdnkfivefive +two8591mrvchg4 +3jjhfzlnklpvvfcnsjbdmgvlfkeight2snxrkzzsx +ztwo79onesix56seven +threeeightrhlxptmtwofivenfourthree3 +fbhcqcttgxlrstcqeight4dbfjp +prsevenfournineglccpgssix7 +hzprzdvbsxzllgvttworstxtwodstxbtjnzm6 +99sevenfive +fdvnvc2 +vmpnpqg32llcxpbzcxqvseven +dc9fgvrvsqqhlj2nq97three +four77twothreeonenine9 +3kfkfour +xfg58six8cjtvmrgvsq5l +gmfxvhftld2hbmmprpppzchcqmxninethreethree3mmplrvbtkf +3fourqndl6 +rj6ninenzkbktfqsc2 +9konehdmllc +mneightzzqvdm14 +8oneseventlrsrzflccrbv +9vvvgqdkrckjlzcfsbdgrqrhhtbb7fnhcxzmk9nine7 +825ngddfhpfrsl6 +mc6tjxxll9seven +fxbgccqmmh2 +five7three4vmxjlqcnc3 +9mninehkmlpcxqnfkqfbg6six3 +3onefourrv1ninesixfour8 +fourtwosdtz817fivevjvlzr +seventhvxk1fournqqqfjrvdvbpkvd +v733rklzvnslkonefive6zbvq +178ncllbfkkh4eightwoq +glbxfjhskzbseven6mjzlxccfive3 +fptwoneonefivefive2ztxpndjdq2 +lxzhsgqkx5mjxtrmbkdtfeightsrchzmq6 +1nngc2338ninedjkvszdmnjrl +five6six7 +bcpxbcbssbtmdfninefivesevendtm9eighthxtvxb +mzdttqmfpssevensixeight3twoone4 +rrtzlhkgrgtmrvlcthreeonefour5 +75threeeight4 +3ttcjsdrj6one91t +3twofgdpfqxxp +seven3gjslxpltpbonemt +82jcvqkrgzkx8three8rmszgdj4 +ctwone41fnjksbxb1mxxzznsvg35fivesix +four7bzfeight3one +heightwo24cxs +fdtwone8sevenfour37 +1sevenmdmlrgmqnnth1mrone +7nqxzdrblffcdm22six +5ttpzlv +zhqjlfive3 +jvzpgppblkb6 +nine77lmfour +kqnvgtkgphxcxsixfoursix2 +pjjdlnineltbcknfqvhj8tworbkqhdcp +nine65fiveeightjmeight +j1sptkfhsczt +4czpqqglpc41bzkss1 +qd28j +three1fourfourm +four5seven4twodvmzzdtn +zj4 +dzzrdkjjdxspfrjsonefive8brrzlrjvzfour +zrjzfxxddn66 +fourrnsphsdzmv9xznt6seven +56eightcbhkmjfourone +fivejzlbvqzb3sixsix +fiveghfclksgqffdpb7 +cmmplbcnml36threetrxnhrrdonelmspsbhfd9twonenn +ccxrlmzrreightone9three9 +zg6four1eight +1ngv +bfhptfjzlgkxtftwo7gthree +txrpbzgjzg272three9jlstdb8 +3seven6twofxvxdlcqj33 +six3eightjrdxgkrkm5five +one67one3 +gnfhhkffqfctxmvznmftwo34gjsrpxlv43 +five6zjdjpptnthreefour7sevenqfjlpshg +onesevenninesvnnrvxxeightrdbvsbdnzgtmlmf1 +2six8seven +3eightjrpqdrtwoxjvmgzpbffjnfdps9 +tptlcldftc3 +lcpqlbjfgmhkjpkhc4eight9ninesixsixseven +eightxjfqqtxnsbsnrdxdjv8six79 +tvkthbbrr8five +seven35threerrkdqjgps58two +5dln1rqqgdjlcmmrvm2pmhvhcxhfsbxkfqngp5 +sixnpvbq36514one +mxdvxfgdfzmkjcrtl2 +onejv7lxmbrbzjsthreesevenninesm +threehbhnm8nine +bvhgqz6 +9two89sixfxjz37 +8xninepvggctk85fivefkj +8sixdjndzzzrkk +five61oneightr +cmthreesixeight7jlvdvmdjfzbv3 +9two1onefour1clxjonetwo +9sixtzphqltmeightlbrhjone1ktrvjldff6 +five68eightfourqpfcxftzlxrhgdcvpd +nxvdtfkltwozzl72fourhzxtqjf1 +91fiveeightthree65twoneh +3eight6ninexqqgxzxfgmsixseveneightfqk +dlpsfmsthree2zgfpdnftvfqgsgr +4kggfpxg8jpxzdqsixeight +fivefourtwo923 +z3gx +six4prlsp84tgvc +1foursrznv62k +vmzr829nkxtlf +3dzsx2two7sixfivebkktgfbzdt +fourpzpmvxc2zvvrhrbhf +frpddtknqjxpqqzhdnfour9sixdqjbqxh +89sevengkbeight6mn +two7jcpnxhbtmhtwo39twoone +cvdqlfkrs821fourrrgnmm +6onefhnnbrzgx7fourxcj +seveneighthfr6rz +9vvqlpnzbxfct8 +two8three2fpseveneight +2three75three2 +znvbrbrqlfive8 +lnfjqfkk8 +14tvvmdlntrv6three +5twor2chtvj +threetwomgrcfivefive7 +five4qbvxthrfxdkjkk +sixthreethree5scmqrfq4vf3 +rjsljnqcrttbpfhfxbfourone4 +threeseventwoseven87dnmqjbbxfoneighttfz +seven4four9eightxqlsixthreeone +1ninesix43bmsttggvzn14 +seven1sixbmnxmz +grqhlkrcdzbhstgtvpclvtphph4twoseven +fgfprscb27pzfvvblxhkvonefive +five77fivethreefive3vddgfngng +13nllfsevenfour6four +threenineeightfour173three +fourqvsbxxzmfh2hhcjxsrkz +4jdtxgltkkkvlnhrztwofxppsdlcqztwo3gdlctj +5four334rvfour9 +551threenine +eightonenineeight8 +qmjqmjvvfkdbnjgkrqh8two +sevenjzqnv32lldmr5one +6five8fivefour +ljvhqqvqxqsix1367 +two6kvjtwonenzf +2p5chjdcseven9 +lnrrrkkdsvfhkl9vfqfgnvonegtwo6 +twoseven4lhhpcvthree4tkrone +8hllnnmpm3rjxndcmpt9jfjqng +qbnlgqeight2csvjshglqzmgkqqxqzq95 +two2nine +rrpffkq15foureighttwo2 +five3ninetpx5fmrzsqvfzq +mrqhcpgvblhvskv5pdsdzzfzfsix +two7fvmhvseventwo7 +3sixone94three8fdplbm2 +loneightseveng79 +fourone7 +zvgjt1 +xpgbfghsmj2six8eight8mzlnvmv7 +grjtwo48 +jhcgjlgxt1seven1 +5dhtppxrxcsbjsm37 +cbhmtp56xbqzppjjfivezhtxxvkrzsix +hctwonelcninefourfive2 +four4rcxpkzbeight95xxdb3 +fivejlplgzflone963two +trgninefourtwo6five +66fournine535foursxbvsfvf +1bskfour +dvlmbrxssevenhldvjxdzcfdvbfourthree2seven6 +6two92635 +8dzszone +hfcm6 +dxrfhpdbrqmqq8four +bfclp5sixeight81three +eightffsqgkmt53gfjxqsskpsfpbcmqvdfour9 +6sevensevenfour1v +9threetfspsfxhnzblgsxz +seven5tz7pfhlpt9qxrqz +pmbeightwooneonefiveseventft4 +xhjhmzljnx7 +twotgdvhkpmg1rthzfc6 +onesevennpcsbfive9sixseven +7sevenmbhlrjxrpddcnl +8fsvntpptctwobjmkgzvc4two +onetwosix4 +fourthree4fourlqbvscdponeights +1glkfrdb69sixsrvvb +ninetwoeight7cvjtdmgpsfivefnlvgsqtstwo9 +9threejtfoureightseven +38nine8 +87two7onetwo +2vkkcgxdqpnthreehklfmfmjdpkz9fivetwofour +one5oneone5oneone +three5hlxkxrmxsbgrzqsgrone +twokbbnbjp7 +mvxpdllxrvfthreeone51eight +rrqvfiveseven5two1qgqppn +92s +fourxcj8frbvlxzgpvoneone +648211 +4eightgzxnsixlvksllptszztmkjb3four +fivegqg6 +foureightmmnknlseven1 +83kx +sixeight12kskzhrjjpslmprtwo +1xzncrsfrlfivetwoxptv46nine +fourmxfq6twotwo4 +oneht8 +3prjdlrcznine +btkpqmxxmggkzftmkxbzqvdccchxdmjlqztzfgfour7 +tvbstznine9z +two1fivemmnlcnmqlrnbp95gjjh +dq671ninezk +6cmxtt769 +629rkhc198 +2fourfiver +three5nqkjdsixfrjnf4gcbjrznine +xjhqqf7oneeightrgkdprrssmxp63 +5fourfivekpvmnlpfrt1 +xnqkjcldhttbpjr8 +fdntjsb957sevenhbmntp +jlmmmmdv482three +63lnbhmdhpsp32 +99cmntldfdflqkfkv +kqnlqqkpr9eighteightthree15threenine +6threefttghrvjsjg6 +spmrjzfm6eightwokn +bdcjfqvsdronertfztlblqbgfgtkjv8qhbjfhthree6nine +9fvltpsxtcbtjxbtlfdvm7 +6jxvxrdmpjthreefstfgrsixfourzbfznjjlqtjx +8onesixkmhgvsnfhqnxlkn +rrjxvqjbnvvsgddtvmb3six5 +eight8sevenbmtgbvdzcpqnzqone1hbhlgcfour +2nineseven41 +8xptgrh1njz +geightwo93sevenseventwobpdhhjsrbfour57 +m4kd9four +6nine5seven9v +glzc1fiveeightvbmvk +ninesixone3sevenzmvrqbtwo4four +9onefoureightfivefour +fjqpgnjdd1twoninecgsqsmtonenine1f +94sixthreedflcddxnvvrthree +vvfnbgpkgsnjtszxhrsixfive5rrdtfpkdhdvsg +39four1pjfkt +45sixkhlfc1fivetcvnlstnine +sevenone2seven +twofiveonenine6eight5 +grxzndnqpd56 +xnpdfnfgt5fivetwotwo +9four6two +sgmlzbpnkrmfivesbdzbnhkcxndpone49 +88six2hrmkl2 +mthree3eightfiveone +smrzqc7twothree2three +nmtwo8cr +378one47four +27four +5two7seven68six +9onecnonethree9 +nineqhvbjqbrkpjhjhdbpk3twoseven +rq4qldc +86bqzct2nine +eightsnfgrjzhsnxbfivethree6ljxx +oneeight1threevzdcplnqrbk92 +8k9dkqmqhndthreethree +9sp6j5two +4rsone1seven2seventwo +ninehhdcbxfgs7fljclncb6vpzhqphxz +drplsnsch3zfr +86nine +2threeeightsixvzpcqjs +dmkhbxsggeight7seven9 +fourshjlmrbbcnznstgj2sx +gcbzbldk6nine +fourskpc1vzfxsrjckcmccljtt9 +1oneone53oneeight6 +six3fourqxqbs9nkbsixthreesix +pmlrkrhqdjgg121nineseven9 +dmgnq6 +kpmponeone5 +mxmhbqnrcjj1threeeightxzfive +onebzxnrqqfltfourglvkqfive4nine5 +threezvmfl7vsdrthsdsjsix9mbrqqmz1 +boneight8onelrtjkj +tqxbbceight9rqbthreek +3h32nklscdkfhtztwontprj +2threesix +qkzmpvkvsixxfzlrfrgv682 +3seven6mvkeight2fourvhvvqone +three389sixeight +bx664nine +nine82rcdvqtj91dbffscng4 +2sixsixtbqhvcndjtcvrrbtdzsxrlrvdxjtd7fzdtlrhlxvbpvhknmm +6zbpblsznhlzljtmstwothree28ngdcfkk +eight8nbfmdqlcvonenine +8two4sx7rffstvxlq1seven4 +gmzbd8nine5nine1one +sevenfivezdfbn7six +5892 +ss9 +8xcvzgzkjcdg +1seven7three +8four1fourtwonezs +hnjzk8 +xfour5mrj +vnkspgtkxspdtwofxlvtlkqpqcffxbqth13cll +mmjkshtmtwofour1 +sixthree6 +seven9mzmbkkrzsix5five +9cbrsqjlhntpzfivegmgn1six +bdbnlrdpsninenine3twotwocpvjd3 +twonine193 +twothree1twor8cmtxtd +bvgtninevfrjs6 +eightsix8 +sixfbzsxfjtfv8 +5onethreeone +dgzcksnqz8foursix +9onetsrtwotwothreerbv +4dnzc8 +fivenine4sjzsdgvdqsix3511 +7twofivefivefourqdgpmfblgv +oneonelgjsk9 +zcfhrrpseven8tlffkfnineeightttwoknlfdjpj +nine5nine +8sixtwotwooneoneeightcdklzjgvnqrsvvkbtfj +7one9vxjdkbhqmfbpt +6twoeighttwo +sixthreesix162 +5jhxxchf69twosxjckh5 +sevenxspmvxpmc788one +9fseven4 +vxzqgxbmtgxnm588seventwoqtmfsb9 +four8nine4ftn5 +eighteightrhjzcmxql28four +twogqjdbmmxqgtxdppchr2xxhcptq2mrvgsdccs +six24 +nqdptone3drgtwoone8 +threesixnine8hlkrj +four7pvvljkscc6hvsppgxrsixknrnrvfjqqfive +7tdnbzqqxftqtxjqxgmbdhbvsqdone22drc +59rqhzrfrps +six1scbkqjd4 +89blbn +lqhoneightthree96tppmhtpmlt7 +threeqpnsevengfx3 +sixk27lfjrvhvtsixtwo +four5slf8onefournine5 +ninehgczrdslkstltfive96bqtz5 +scfkzsr4fournine325 +5eighthzn9rjdzxllvg +1six1threedrfpflhqfour64 +fivekdtgcdsjxone8nine +7sevensevenhronepdgbxvfd5 +619nine6threetwo6 +fivehchdssjrlshfqjlptsxghzrcsfcglm4 +6two73smnqbbmsix +84fivermpjpjgkn +oneeighteightfhjtxbjc94threefrnnnncdz +lrckglbdn94eightqbfxp +mtztmbhthzone26sixgjvnbzsjfmthreevqdqrld +pnrtpgzcnznfive3eightwogkq +threevfpkrjddtpszxddckhftt6txkszsbxnn +ninecxdtmdnineseveneight5fivesd +xjvv7one +5eightfiveseven +twodpfdzvqmpzmvs7tpjnpmv5 +75fivethreesixsfqpzdonefive4 +4onefive6bsvtplblfbmnjjlb +eight75one73pjgdqq +ntcnmnkvjzpvxpmb7twokqfour1 +zd1sevenmgdrgrzvvh +65four +3kzfztjxjbseven67bnfcntfknlxlv +eightfive8xnnkeightfive +6three95eighttwonineonevkrtwonebgs +92seven2cndf +onezxphkcrsix7klrhnhdcxrpz +mgl8ldbxzdlgtwo6cdvxbp +foursix7lzcddxnjdrfqtthree7six +hxheightwoncdcrkczbninefour3lfdtgnqgcnbfxbqlnt +2pmcvctfml1one92 +nineone9eight +6crppdpp4cmngqseven3mmv +473sevensqpvvhfdrfiventgvmvrhtqx +gpnzc1rmfxqgj8nine271 +84sixtwo +frcrtsqhfour3threefivesix +bhcvf6 +seven2seveneightzqmdqhb9 +28hjjrgqklqgbm +98three +jqzjntlc541 +oneq22 +7fc92ljfmqt19 +sixzpzkgfiveonezjvrzfdcf43lbqxqseven +1two4kfxglzcdjc3dpvb +fivembfkfdq6 +nplrclbrbf5ks6five4hzzbsnine +3mkmbgxhn +seven9d +vnfj8qng +eightrgtjpdjjktwo1lphnlrtjfxtvghhbncj2two +eight66frbpds5g +3one8four9two5 +9ninefouronefcckhcdfb1mnmdsltdrsix +eightsvsix122241 +3fgpmgxcdqfourkhnrptlktrchfqbxcbbcxvjgznfjkj +eighthbhsgrqkgcxtwofour2nzj +93xnjrphktk6vshpvnftblggghskg34 +seven2sixsdvmcfgq64 +twothreefive3hrmkbmrskcvknineninebnjksp +82fourninetwothree8 +2two158threeninesix +hgltdx48onetwofvnsmmsdzjthree +k38 +ninenine4sixctnznsb3tkpx +pvfzqtgpntnfhfp47rhllqrlx22 +815qxtrghrsg +5vhfourvdblpninemdzbbgmvsfone +nine8nine6four +threebcbsmxbks2two5twon +kzpsc74qxflxpsix6jgmzgqxvsngc +7dbrsmpksixqttqsphqpd7twoeight +kffivefourdknzqsevenvkssgvhxf1 +sixeight5sljd5fourxkkxv6 +rnsjsmfcbp4twofour +zdfour5pktmsmxf3 +threen42 +stgtphmjk7onexfour2foursrpj8 +pjbgtsevenseven7zzhgxlmz +sixeightfivefourseven9bpjbcmvkrfive +hfhxfqlbqtwo4cdfksbbtlcsix +778lkffbzmpdbxjbpfoursdbp +tvpjnvtxeight1onefive3nvncq +38seven47 +five8threexqtglzmpmvbzfour +nmtsjjfvfzbhpltbbsrjphrnxhr1two3sixvp +4gbvkbfqrfgrbr85sixone +6mxqltfsxqxnpdrjkxhrp +lftdxbhhzvvhpone51six +3grhbqf5one +six9four94tthree +sevenh1bdcgdtmjqhnkzxlkxsevenonecbx +jvtwonecfksxckgq6 +zvmjbthreecbpfdvd6 +6bsvrsevenbcbcgrrhpxtvbhhfp1 +sevenfivemtmpcgml9mljnhcrdbfvksvlbpmvhs +8nine9 +mszqdg7jsrcckxn +eightseven9zzsixninexhscseventhree +eight57 +4zjpjz26dxnzfb +rmcnbnlpd3nine4gngphqfmc24 +1vvgfxdfourprlmsjmvvtxnn8seven +nineonethree6zznkfrcgzvfour +gcnjsdlhptwofourtwoonemggshpdh3eight +4eightfivenxftjch +eightthreeseven94 +twokvtjgcq992 +69psqdmgbtljjzjmpsbs1fiveoneggjbbk +3k +eightsix3seven4twosevenq7 +jlthbzsc2 +22nine8jhmktwo5 +8pzmtnlfptpjckftzrzqsrxkkcc3 +four33jfxmhcdktzhqvmkxhklxjllx +nine3lqcsbmmh4f +three514twonellp +4qhn5 +sixbmkxqdgtkbcghvpzonecfmgkpfrxv68six +6threeeightjhfsmp8mpvhrjcxzsevenone +sevens9two37fjdfrnk +jhzpvfldrbmmmglvrkz2ninelbgpdlpdcteight +qj9 +rxfhkkvheightfouronejh8238 +zfsixvbqngj1vhbvxpfk6 +vjbqvcm3 +51six38ngvq42three +7zjtcczjz79seven +five8fivexxmrn +sixseventhree3sixcsk +zninefour8tworxkfb48 +63nine3 +11eight +bxlgdzqthree2ninegqn6kvktfts8 +tvmzzlpnineztxdbkxgthree1four1 +gxcnhxone9 +8eightfive5jkqx +qcfgbpgdveighteightone7seven +86eight2five +tftbbfpsvhtwo8eight8seventwo2 +skfp8 +8hdlhh4ninenxllmthreefivebhslxkvtcp +sixbmljnmhseven4sevenmsfbsbqlzrrseven3 +v1828 +6seven53hhtj +five51lkfsrm2 +bvnrdvjnxjbfv9prx +tqbnxeight6hztrsbvronethreethreeqvh +pcbjr3cjhrqxbcvpzdmfive6oneightgt +qdeightl6four +ncprx96ninegn3 +sevenb4eightwonr +qbslkmkqlf8ztzeightpcn +fiveeightcpn7hvxmtpcsbqfvpnmvgncfbpxzhfive +3rxxcqhlp4five +threefouronevdbdmktp17 +sixdtmnlhth9onefive +fouronelxgxpvtmseven2ninesix +eightrfxrkcfive21ftlcgdcrmbsnrr +nine1fourfourxkppvqrxfdhsdphjcgnhnfnzlld +562 +4sixhj4eightzkbfpdrtzcsp2 +ddfdbdqzfshfxnseven6onetwo2 +five915b3 +sghrbfzmmrrbnone9four5rkmqgh +threedmmsdvgs6twotwochp +seven1fivesixnine9four +6dvmgsjcfour3q +cschsrvz3nkk +4fnqmnd4rnxbjvcbxpchfour +3eight9 +tboneninerzhsgqqcxd2gxhm2mhdpkjeight +vpsbgmzbjk6nineeight +sixsjbzldfive6 +qjprfk1eight7vbdshhnfive59 +dbxdgt6 +pdgghktdjhsxnblgpzmtc24onecmctldqtsc +bgfzght2szvttsdndfiveqgns3 +6ninebdnbxzmeightfivevff8pdllfour +four2nineeightvfeighttwo +fiveone3sevenhfqnfbjg3five +eight19two +fqkeightwosvszgpjvbl2xtmgmc6128six +6five6one24fivemcgpx +pmvrz6threemlhoneightdjf +7cxrgxx53gksgdsv9 +six3two +nfqffqrvkvhqfzthgxp3fivesix7gb +nlqdkgllxdvgj8xdhdfnnnfive +fournine1nineseven +four35djzxvsvvdfxbnhsixfouroneseven +9fourhntsmprtddm +fourfsix81sixvxmz8eight +3pqngffjxqpntqtl8zz4 +five325ninemfqxnseven1 +1one2gqx3 +hqsfive67rr3q4 +onefblnbfvzlzthreenine1 +96zsvdl2 +1fourjjhf1tn18 +sixfdpljnbpzxlvhncjs9threefckbgtcm +seven6ffmvnnmxl8fxskzvpfs +5tgbqdkfive +52czvkbqgztwo17ninesix +bmshtrzdcmkfour5 +nrfn25one +9two4plklcqzjftj7 +onedks4five6hdllqssixbssl +2xftcfnd2twotwo +rzxzkcdtnmsbhnncltpj62 +6snszfour +398seven58 +vstfive8869 +1fivesevenvgjrlqqlthjz1 +tpg7eightseven +gqvpptsix356 +7nineone9fournineeight +tr1threenine +tvz8xconeightfz +two11five1nine +jntkxfvt2threegseven3 +b69ztbtgmqfntdnine4two4 +threedsgrrfcpzpfivebrpjhzfhs96gxmfhkhfive3 +eighteightthree5crdbzgqvtxx6two +nine4onepxjtmbhrpklmlhcfspxrjdnd +7fivetpttvnmgzd +8lmddfzjeightxxvvcvp +loneight1three4dmzxqncjbninerbsrjxxlsb +657fourdjkhrlxjdp3ninepvlqhz +three4threekddjrfsdk3 +8xbjcnsjq89 +six8ninesixfourpcsfhnsxgrz +8twosixmvhmsps3 +six9sixeight +4seven175 +4twomspqqn6929 +71seven9eight +4znc92eight +ninetwo2blcllflxonezljhhsfivelngxk +nmbrjnsqhkxzxhmxsix1oneeight5fourseven +42kvzlcdjzxmgnpqmsmkxq3seven43eightwovms +rj5hxkldqseven +f7 +5sskjblmnbzjhctvmttwotwott +9ftmpxlbphsfxzsbktjttkxclknsbkftwo7 +3ndmzlfbsfqhxrlj2fourfive +8378vkthreemggtf2 +2hprlpkbsfzbnbpsmflxjh15one +dxvtfrhhxthree68four529eight +xgjvjddtnine1zxeightwosnx +sixblpgkznvjseven2oneskvxgngzlpzvjcxkcjgblh +bhhkfive4jgngngjfhbp8kpnjtgrmblone +8vmfivetwo9eightthreefxbvf +8738 +8sixlgnpbpqpltbqqjjxpkcdfourhxzqpmm +seventwo5three +h46ssnqlfrl8 +ninetwokrkfqhh2jbznndtchssjtbpqdhtnrhsix +254 +1nhbdtwosixonezxtnvhjnine +qxx97d1dcnqzqhsixnzbrvrksnc +fivegnxzgvmzone8fourfivethree5 +fivexhx7six87 +zngqzxpmd63bgfzjpftsjgzghdppqfqbnblt7sixone +ninemzlgnkglj1 +fiveninesixeightthree4six1 +fivesix5ninethreeqkxczhp3 +eight19two16pqdstm +mplj637sjtgzltwo +7lvs7xzmjmxjhlgdqhtqllhtzlkmbfm5 +six6kqvbjfoureight94 +one9qdjpfszz6vxbrdnntfz8btft6 +65onendmdgtr +seven368 +eight31ngsdmnm +2threetgpvcseven +nine297zqgvglthreel +7eighttxvrbjsnbcseven +rdpcnrscggv1cxv63 +2cdfltscsnzg8eightwosg +jrszpsjthree8n8bdjtlcbxtsixktkcc +dns3 +2threebpkctf +5pgzpfqntc +9pkone +oneseven2fm545two3 +9threegtctbldnnclqpdmjnps7seven +1dknxbdcvpssix413 +rzrvm77one2 +sixnttfive97jdcjvcmg +spdmkhnthreebqsmtqgnm5threedxjcvsrxbq +btzkx8ckninevffmmfm3four +hgx8fivenine2oneightc +thdfczcpnxctgfiveseven65threeeight4 +five6nine +qgtds7 +hqnzcfleight8two2 +8q8zbkjrqxzhlzgmqmzrbfqceight +nbbrrmksdm2ninefive3x +fivec2sixsixmngbsjzk71 +821one4 +5eightvpxfpnzvsfhcdtn7kdkjdpsqcl +6seventwotwogxvgvxzjbvcqcl38 +onetwo23863 +24qtzzxfhq +one7six814 +czdhrn2twoninetwo8 +one54 +foursslpnrqcv7sixtwoned +9xsptsgfplpbrtpc1sevenjrggpr52 +zoneightg6sixgfdtwo7 +34twodhthree2tqsevenvqqrxq +monektltrghq97seven +ggeightwothree5cpfvrnp48 +nine7zpcbx33bbmd +six831 +63vjlqdc5one +nine9cgxgrq8 +5sixxpeightsix +onecgpxlhhgtthreetwo3 +336 +xcdjlblthreefourqrcxbxlhsdlseven5five +9znnlhrrmb1999drzkckthreehghffcgfr +two8one +ztwogggh48 +six4pcmqkpqb +14two47vmhbsgrgdone3 +84eight2 +5cnoneskjzppm +nine8threecstfxqp7 +threecsbhnn22three9three4xphcvgnz +vjq8ninenhr7 +qcffmrfthreexgjjrdbdthree3 +eightsix5 +threeeightfcsmrvdqzp6 +sevendcpm3five4eightbthreefive +kq9one46dqnr +jbmtdqbzn5sixlnthree +ninebdz4fourbvq +phbzxtvtthreerm89 +dqlgfoursix5k3mcrkmxcp +3fivesixqrrvtsjdxtdqp14pznxpnrgkrvg +5cnkfz4lxbvbpmcfninetgn9 +mtjq8threeninefourhnzgctvtrfive +47l6784 +twopdmponenzpjfbqgt2nine1qccqx +77hspkdhqfztwomkdshrkn3nt +five7pjrslqhkzcjzhn6 +twoqvgphqs8zzmgclhsseven5eightfive +threehmkjmrqqblnrfvbpzhrsix4zvlmcqeight +6lcfjthree8ninefive54 +sevenfive558four +htbdrfh8bthreeninedrjdbjbzlknine +hkhknzrbfsevenhcvbdfs2sixcbjqzltfour4 +qrvfpxdseven2 +139msnzkfgpzdz5nine1 +rbdone3ftvrdkssvmnzjgpcbdjzdkcgbcs69 +nine58 +2ckxdtcqc5seveneight4two +qtgndtm4mrqvtgbgjf7nzhvtvjqqrdmfiverzzgn +3rchqn37tlvgtftdjqxgbvhlpclpneightfive +11sfhcntjzpnkvpzjfhhpmbtjptngpnbqthreethree6 +fivenine4cthreeeightzqlckkvs +5threekjqxkddgvzph92 +five372seven8eightthreefour +fivegjjxh15zdnbxzlhleight5fourqrpxj +84sevenvckrdpxlgzkcbpr76fjzbpn +mvvxgjfqj9five1psvtflxhkpfourdxzxhvxmthreekp +seven7pnltbp1twotwo9lfdgzpj +sevenfkrtsgrnhgfive54three8csmsg +sevendczlbgjbg6srsbtseven +onejscsevensix2oneightd +mchrcflvfj3znrzhrvbhm +brfninexxntnine83kfzbn +97tfgthreefxpv +kspdrcnvvntts8bb4sixvghhjcpt +8onedxcbnlvpntljztxs +c91drttnrsevenxj9 +9onethree9fivexrszjfxcrjdbskdmn +cjtnzpfourxspsjvmrbqclkzkdftc8pdfbfxjnvflgfkqctvcsc +5seventkqrdpmrrchxfournczqzlqqm7p +nhpbdxgzzjltdftqc5fivelgvjshonervrxmgscvhnnfl +2gcqpdcgjv +bqhzdzxb54 +nsmxljkjcmnmxvcrj7threegcrjs7 +2cninev1eightdjcztnrk +cmjskeightmjfrlfhm22fivetzmfive +8ndsix +nzrgmlcrg5r4eighthfxm4 +threeptlf3x4 +3bhd +cbmzrtglngmghmonezdqnhxxd1ctpghbfzqfivefour8 +eightpdzftbdlcrtwonine29bcgxflmf +69crzsmjfivecxcqtffoursix4two +92zghnv +fivejmdxvnf1 +1ntvtnrjmeight1onegckvcnsjnthree +ncxgppbsnhsfnhlonelfbxqzsgfjj8 +eightfhjbrlzxcgtls42sixtjk7two +czrtnfzjnjhxdxtbgtmntkcpninejtzrprsstm4eight2 +483nine +onecnxpmhjjcvdtzc71seven +5l15 +19jmkmrxbdbtz4shpdgmmhzrxtbftpgrj3plvlqdvnr +two4two +kqgtjstcpnhf8 +sn6 +grtgjxgqhv2fourbjmfnb +bfmtkqfcp5hks74fivesevenbgvgzr +peightwoninef2ninejmlhndvjd92 +1qxm +2drkgnvghqrjtfxrvnthreesevenpzzldp +four4zcmmzgbzc +4nfbpctgmx +3threemfbgthree19sixone8 +ggc1gldjhxsgvq +1four4seven824nineeight +ninefour6one5ninetwo +bpjs8rjdxpm +zggcvkzeight7onejgkhpsrdkfvfx5three +7h7lpjzsdv4six1 +6seven9one4 +sixfour6 +4hkddrmgfp +43ninecrtoneseven2qbhkkbzdltfour +85 +hlfive3dqzdvjkdd +5chpcxbjkrdzbjtwofivethreem +6ninenineonefour +5five8twoonesf2 +four1seven5pbbjgmxgxmvfzjtvr6vttbnd +zzkcpcckmsixeightnine4 +9xxzzvcsg45one +xmd3ninerxllskrl +xxj2onesixfive3six +threeseven8 +one43 +1sixthreelcbcfgbone3bzgrl5 +four12535three5 +jztxrtwo8495 +threeqhsvcvzfnsevenfourtwothreeffrz9 +onevqlxcz461five4fthree +znine5 +cch5ptlbcbh2ngnlqnrdsjv6mfhndf2 +threehblbzlddttzkrsl51eightzrj +68pgmnbz7seven +twotfhcgltpp1ntpcvrmkgd998 +seven3fourfive7eightsevendlqqseven +jqtcrf43zkktbqhsevendljgb5two +3one5threethree +vvpjcnine9seventhreeninebtzmr +jfourp7twoseven32 +2prjqnineninevjlmqkrkdxv +67six1oneddp9 +tcbcttxninenine21hrmphqrjkvtnfgchjnb3 +sg1six5sevennineone +ninet7jkrzxtmmz +ninesixtslvqck9 +dnhsp9sevenrrsjdn +onekqkvb7 +2sfflskftk +79four +jnngdkghtwo1two +fptfourseven4hjvkz3onesix +tzhtsgkcp8 +9n +six4294seven8 +seveneight74five1 +kfghjdssttgrfour2two5three1nine +5gkhgsixvlpcdmpgbjkqtjlthreetwo3one +sevenfour1tfxzgsnldk1fiveqg +187qhhqlrjx +2lthreethreexthjqcsix +cgpxkxgkmcpdzhtpc363 +sixbtkvqt3 +4twotwoqqmtb7dczgqrtsixseven +seventwo7z9fzgjkl5fjndrznc +qsgfnjqsghtwoninethree8lppsthree +threesevenkdzzvzbl2foursxrlq4sevensix +seven8bjbmcnhrcp3one +gg531 +one8sfvzplxlknine54 +dlxeightwo48fourthreeninethreeeight +sixxlglqsjtmqmgcnfvpljsevenqlgllg6 +tszncfour7one +three54three4 +qkjxzcdmxqvjngmrkpmleight83 +5twoksv49 +7six58sseven87two +fourseven6ndsgfjv8 +ppmclkxhpjpqrjoneeight8two +538 +sixlhsixfive5 +twosevenb3f2twonebpb +lxqbgl55fgzfmvtpgjbxxgffsixlkxlbvmjkkslqpkq5 +7ptnpseven6one +3mtlbfc6tx46five +99pgdmnrbjv +7twokvzlvptxcrfbfzqsxsqvxtfkcpkczkr9fjxsr +eight82lfivenine +onetwo2jvqdhkktbeight +8zhxksgcc79one +knqqz4 +36twofour +2gdssixtnineeight2 +foursix4 +49hjbscbjvbckhjmjrdbh3one +fivesixdqpnv2 +7ftwo +fourffhffkphssbxzsgeight68dvhgrb +two8sevenfive1 +dggljb5nvhpspbscfhd21 +twokeightthreeone6lqglrseven +cklfcsqgtwohptslmlgdpjktvvbbx3 +two3sixthreesevennine +7ninepnclmdnv7ninevmqoneightpct +czzbhfhhrfonetwo1ttvpgxkgsonektpnfrptjltklj4 +7sixthree1five45 +btwone3fivelfzmfxsr81oneqhkzjvt +5kmrlbvpcdrfivefourfive3 +9fsl3nine12 +1seven1seventwofivetwosix +sixzdeight9fcpzvsbtz85 +n1jmxjvgfiveone +1qsptpfbqtrl19three +5twoeight3grrksgjdkgn +1dq4sjknrp755 +2three2five +txktfive2ngqfl57 +vnrjvh1qpbbzqlgjpgrsgrqgggthreeone +sevenone8srlxqqlvv +eightsbfivefourfourseven6 +853 +eight53b3sxfvnz7 +qbhrhkhcbnsfivenszghnbhsix2ggvv +two28three9 +rltzcpbqxfive1nineone +5threedcfspjkm62seven8 +tlndznhtthree268 +ndfgfkphmn2sixjxxtlbqlnine +51eight682fivepnine +dqvrvthreesixsix2fivenrjeight +seven69 +4qlkktltwo8tqgxcninefour21 +threefour32j +4nine27ngxp8 +seven5ghxkb8 +nineone56 +two8onezonesctsttzt5 +64km6ttncd +three6six6 +threetwoeight7six7jgmhreightwocl +3sixfivehjgvqjlrsfivesix6 +fiveeight3sppjtccnineeighteightnffgtlsdj +12seven9fbqxhs9jgh4five +7dmbqrqsnckxtpt +ktvlgfzt95lfdvf4lbppfccjcprdpkdj +seven65lrjmmqdfjfourtslnhdh5 +sblgrkqccmpqhfksmg5532 +rgqzkmmv4ctgzcgvqdghmvfour3 +24rtxdxqnbvdnkgtgcbfkfbtwo +63seven78hrdnnsh +eighttpj79 +foursix6 +6czcdgdmrmzcdcfmsixfkdnbdsplcscqh27 +3333dgrd +8threeltfpfz3 +xgxddj3qkcnbbbhtvbzkmvh8 +s2pzqkldrcx43xzmxqvspm +eight1gkvlt24twothree19 +lkrzltxknd5fmjgbds2klkfgcgp3xcbxxpnl9hzfbfclrx +2zhn73 +sixone4eightninelthreeeight +seven8vlqqfjfmltwosevenfivetwo +spfkzfmssfjrsevennine8ltlrnrjbcfive8 +1spbthreeshsgmrbcp +ninefive7cnxznfmcp6nine +eight4one9x3nine +eightnine4kgxhxx1ckrqlrn +6sevenkjmfxrbhck +jsgtwonefvmcdsnqfp4fivefivesevenhkbkqcb1vgkshfnxfc +eightcvzmtlvsm49 +78four +threeoneninecjzs75 +xrxrsrh58 +1zqkhcvoneseventwohbrfbqgvp +9zfznrfvtgjfhsk +v5jcblbstnvxk +6s1 +6three1seven +75xpmzmhqqphgtrblhkcdxczcvbmg +2rqv989fourthreefourone +zmghjgrfqlzpdcqq9fjnkbl7btgf +2three3qvbfbn +fivehnklrqktnqqlqfslfjpfpfx9six +3xvskqbjzrlonetwo +95fx6sevenseven3grfncsdttt +two8twoklgnrm +two9seven6eight +7lh2sevenshfvljtphhnbhvkzxxgjjrvlq7 +ninemdgkndsevensevensix4seven +4three6eight1lkdmtbh +7rdpvbqljvnine82pmqclfive +nine6nine7seven6 +54rvpqphbpxmcfjmcspsnhrjp +eightn2skzmpmtgqhvvfxgqonevtbfsmfklzspxdrgj +nine276rzshsrvncjrdzfxbmzzlvkhdlcc +sevenfivexgznfftgthree44 +fivekltdkmm3rdmdnm32nineddsfdzpks]], "\n", false +) +print("Advent Of Code 2023 - Day 1") + +--strdsum +--v0.1 +--@shiftalow / bitchunk +function strdsum(a, b) + local s, l, d = '', max(#a, #b), '' + for i = 1, l do + local v = (a[-i] or 0) + (b[-i] or 0) + #d + d = v > 9 and '1' or '' + s = v % 10 .. s + end + return d .. s +end + +function starts(haystack, needle) + return sub(haystack, 1, #needle) == needle +end + +local digits = { + ["0"] = 0, + ["1"] = 1, + ["2"] = 2, + ["3"] = 3, + ["4"] = 4, + ["5"] = 5, + ["6"] = 6, + ["7"] = 7, + ["8"] = 8, + ["9"] = 9, + one = 1, + two = 2, + three = 3, + four = 4, + five = 5, + six = 6, + seven = 7, + eight = 8, + nine = 9 +} + +local sum = "0" +local iter = cocreate(function() + for line in all(input) do + local firststr + local laststr + local first + local last + for i = 1, #line do + for d,v in pairs(digits) do + local substr = sub(line, i) + if starts(substr, d) then + if not first then + firststr = d + first = v + end + laststr = d + last = v + end + end + end + local newsum = strdsum(sum, first .. last) + print(sum .. " + " .. firststr .. " & " .. laststr.. " = " .. newsum) + sum = newsum + yield() + end +end) + +local done = false +function _update() + coresume(iter) + if costatus(iter) == "dead" and not done then + done = true + print("sum: " .. sum) + end +end + +__gfx__ +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00700700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00077000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00077000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00700700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/day2.p8 b/day2.p8 new file mode 100644 index 0000000..6b6782c --- /dev/null +++ b/day2.p8 @@ -0,0 +1,174 @@ +pico-8 cartridge // http://www.pico-8.com +version 41 +__lua__ + +local input = split( + [[Game 1:4 red,3 blue;6 blue,16 green;9 blue,13 green,1 red;10 green,4 red,6 blue + Game 2:2 green,3 blue;11 red;2 green,5 red,1 blue + Game 3:19 green,4 blue,13 red;1 green,1 blue,1 red;17 red,18 green + Game 4:4 green,8 blue,20 red;19 red,3 green,14 blue;15 red,4 green,1 blue;18 blue,14 red;19 red,10 blue;3 green,11 blue,15 red + Game 5:1 red,3 blue,15 green;13 green,2 blue;6 green;6 green,8 blue;4 green,9 blue,1 red + Game 6:2 green,10 red;4 blue,1 red,2 green;2 red,2 blue,1 green;5 red,3 green,1 blue + Game 7:4 green,2 blue,10 red;1 green,12 red;5 green,12 red,2 blue;10 red,1 blue,5 green;1 green,1 blue,11 red + Game 8:8 blue,3 red,1 green;9 blue,14 green,6 red;3 red,15 blue,16 green;9 red,4 green,6 blue + Game 9:9 blue,9 red,5 green;6 red,1 green,12 blue;7 blue,3 green;4 red,12 blue,1 green;5 red,4 green,1 blue + Game 10:1 blue,2 red,19 green;7 green,5 blue,7 red;2 blue,1 red,3 green;2 blue,9 red,10 green + Game 11:2 red,17 blue,12 green;5 green,3 blue;14 green,2 red,15 blue + Game 12:4 blue,13 green,1 red;5 blue,3 green,4 red;8 blue,15 green;12 blue,5 red,6 green;2 green,5 blue,4 red;11 blue,18 green,4 red + Game 13:8 blue,11 red,2 green;18 red,7 blue,7 green;6 green,9 red;7 green,3 blue,12 red;1 green,4 red,4 blue + Game 14:3 green,11 blue,1 red;3 green,1 red,13 blue;5 green,6 blue,1 red;1 red,5 blue,5 green;10 blue,2 green + Game 15:3 red,8 green,1 blue;8 green,10 red,3 blue;1 blue,4 green,2 red;10 red,10 green;3 blue,4 green,3 red;12 green,7 red + Game 16:13 red,9 blue;2 green,7 red,7 blue;9 blue,7 red,7 green;13 blue,10 red + Game 17:12 red,19 green,4 blue;2 blue,5 red,11 green;4 red,7 green,8 blue;6 red,10 green;3 green,7 red,10 blue + Game 18:2 blue,6 red;5 red,3 green;12 red,1 blue,3 green;1 green,19 red,5 blue;3 green,2 blue,16 red + Game 19:10 red,5 green;10 red;9 red,7 blue;1 blue,8 red + Game 20:11 green,5 red,7 blue;7 green,12 red,11 blue;13 green,3 blue,5 red;3 red,3 blue,1 green + Game 21:10 blue,10 green,2 red;16 blue,9 green,1 red;3 green,1 blue,2 red;17 green,5 blue,2 red;6 blue,15 green,2 red + Game 22:2 red,1 blue,5 green;4 blue,3 red,6 green;3 red,4 blue;4 blue,1 green,1 red;3 blue,3 red,5 green + Game 23:3 red,7 green;17 green,7 red,5 blue;4 blue,4 red;19 green,3 red,9 blue;3 green,3 blue,6 red;9 red,7 green,6 blue + Game 24:2 red,14 green,8 blue;6 red,12 blue,15 green;1 green,10 red;3 red,7 blue,15 green;11 red,13 blue;1 green,9 blue,10 red + Game 25:12 blue,7 red,7 green;2 red,10 green,9 blue;11 blue,6 green,6 red;6 blue,6 green;4 red,8 blue,2 green;6 green,4 blue,3 red + Game 26:2 blue,5 red;9 red,1 green;16 red,2 blue;4 blue,1 green,5 red + Game 27:12 green,12 red;15 green,11 red;7 red,19 green;1 blue,2 green,3 red + Game 28:4 blue,4 green,7 red;6 green,9 red,10 blue;5 red,4 blue,9 green;9 red,6 blue,2 green + Game 29:1 blue,3 green,9 red;5 green;3 green,2 red + Game 30:1 blue,5 green,3 red;2 green,1 blue,3 red;12 green,4 red;5 green,2 red;8 green,4 red,1 blue;6 green + Game 31:9 blue,5 green;3 red,11 blue,2 green;1 green,4 blue,2 red;1 green,3 blue,1 red;11 blue,5 green + Game 32:3 red,1 blue,16 green;11 green,4 blue;2 blue,4 green,2 red + Game 33:4 blue,15 green;6 green,11 blue;5 blue,1 red,13 green;14 green,1 red,5 blue;1 red,4 blue,14 green + Game 34:2 green,10 red,2 blue;8 red,10 green;3 green,1 blue,1 red + Game 35:3 blue,7 green,10 red;4 red,9 blue;8 blue,7 green,4 red;2 green,7 red,3 blue + Game 36:2 green,4 red,4 blue;1 blue,6 red;7 green,10 red;10 red,3 blue + Game 37:1 green,1 red;1 blue,1 red,9 green;6 blue,11 green,10 red;17 blue,3 green;2 green,8 red,6 blue + Game 38:6 blue,7 green,2 red;12 green,15 blue,3 red;7 blue,3 red,7 green;6 blue,10 green + Game 39:8 green,4 red,14 blue;19 blue,11 red,5 green;15 green,12 blue,13 red;18 green,5 red,11 blue;10 green,8 blue,10 red;8 green,2 red + Game 40:2 green,5 red,4 blue;1 red,2 green;10 blue,1 green;8 blue,8 red,2 green;2 red,6 blue + Game 41:18 red,2 blue;17 red,4 green,3 blue;5 blue,7 red;3 blue,3 green,8 red;8 red,2 blue + Game 42:2 blue,6 green,7 red;2 red,4 blue;4 green,4 blue,10 red;6 green,5 red,8 blue;3 red,3 blue + Game 43:1 green,17 red,1 blue;16 red,8 green;7 blue,15 red,10 green;1 green,1 blue,6 red;13 green,13 red;11 green,8 blue,1 red + Game 44:9 blue,9 green,19 red;7 red,1 blue;6 blue,8 green,9 red;8 green,2 blue,13 red;1 blue,5 green,19 red + Game 45:5 red,3 green,10 blue;4 green,17 red,3 blue;13 blue,2 red,10 green;11 blue,15 red,13 green + Game 46:14 green,1 blue,6 red;12 green,18 red;10 red,1 blue,3 green;5 red,8 green + Game 47:8 red,5 blue,2 green;4 red,4 blue;3 blue,9 red,2 green;2 red,2 green,4 blue;14 red,1 green,2 blue + Game 48:11 red,2 blue,1 green;2 green,11 blue,7 red;2 red,1 green,12 blue;1 green,7 red,2 blue + Game 49:7 blue,8 red,2 green;10 red,5 blue,2 green;10 red,2 blue,3 green + Game 50:18 red,3 green;8 red,10 blue,3 green;11 red,1 green;8 red,9 blue,1 green;7 blue,3 red,3 green + Game 51:6 green,2 blue,3 red;1 green,4 red;1 red,1 blue;1 red,5 green;6 green,2 red + Game 52:8 green,6 blue;2 blue,1 red,17 green;8 red,8 green;2 green,4 red,2 blue + Game 53:6 red,4 blue;15 red,4 green;16 red,3 green,7 blue;1 green,18 red,2 blue;14 red,8 blue,1 green + Game 54:9 red,11 green,4 blue;9 blue,9 green,14 red;3 blue,1 red,9 green;7 green,16 red,10 blue;11 green,3 blue,11 red;3 blue + Game 55:9 red;1 blue,10 red,1 green;15 red,5 green;2 blue,1 green,14 red;1 blue,2 green,8 red;6 red,3 green,2 blue + Game 56:16 blue,13 green,1 red;7 green,4 blue;1 red,11 blue,16 green;10 green,2 red,9 blue;20 green,1 blue,1 red;14 green,2 blue + Game 57:13 red,7 blue,4 green;19 red,3 blue,8 green;9 red,2 blue,13 green + Game 58:5 green,10 blue;11 green,9 blue;6 green,11 blue;8 green,2 blue;1 red,5 blue,2 green;6 green,5 blue + Game 59:7 blue,4 red;1 green,15 red,7 blue;6 blue,15 red;2 green,13 red,7 blue;6 blue,15 red + Game 60:6 green,2 blue,1 red;6 green,8 blue;11 green,2 red,15 blue;1 red,4 blue,9 green + Game 61:2 green,4 blue;8 red,4 blue,3 green;4 green,8 blue,5 red + Game 62:1 blue,11 green;7 green,3 blue;7 green,1 blue,1 red + Game 63:14 red,7 green,1 blue;2 red,15 green;3 green,6 red;20 red,1 blue,9 green;11 red,1 blue,15 green + Game 64:9 red,2 green;9 green,8 red,2 blue;2 red,2 blue;1 green;7 red,1 blue,9 green;12 green,4 red + Game 65:4 blue,1 red,3 green;7 green,8 blue;11 red,3 green,1 blue + Game 66:5 red,2 blue;2 green,1 red;2 green,13 red,4 blue;15 red,2 blue + Game 67:2 green,1 blue,15 red;8 blue,10 red,1 green;2 green,6 blue,18 red + Game 68:6 red,2 green,3 blue;1 blue,13 red,5 green;5 green,2 blue,7 red;2 blue,8 green,2 red;2 red,1 blue;8 green,8 red + Game 69:2 blue,3 red;3 green,1 red,2 blue;2 red,1 green,5 blue;3 red,3 green,4 blue;1 blue,4 green,7 red;2 green,4 blue + Game 70:2 red,17 green;8 red,14 green;1 blue,18 green;5 red,4 green,1 blue + Game 71:6 red;3 green,9 blue,18 red;19 blue,14 red;11 blue,18 red,5 green + Game 72:13 blue,10 red,4 green;5 green,13 blue,13 red;7 green,7 red,5 blue;9 blue,6 red;4 blue,6 green;7 red,2 blue,4 green + Game 73:3 red,6 blue;8 red,2 blue;6 blue,1 green,4 red;1 green,5 red + Game 74:3 red,3 green,10 blue;1 green,1 red;7 red,3 green,7 blue;3 blue,4 red + Game 75:1 green,10 red,8 blue;13 red,7 green,9 blue;18 red,9 blue;2 green,1 blue,5 red + Game 76:4 green,4 red;8 green,3 red,3 blue;1 red,2 green;6 blue,3 red,3 green;1 red,1 green,1 blue + Game 77:7 red,8 blue,7 green;13 green,7 blue,8 red;2 red,10 green,5 blue;2 red,5 blue,3 green + Game 78:2 red,7 blue;5 blue,6 green,3 red;16 green,3 blue,10 red;13 green,2 blue,2 red + Game 79:1 blue,8 red;4 blue,12 red,5 green;14 red,10 blue;2 green,7 red,2 blue;14 red,2 green + Game 80:7 blue,5 green,7 red;2 green,2 blue,7 red;4 red,1 blue,18 green;2 green,11 red,3 blue;4 blue,9 red,15 green + Game 81:3 green,4 red,14 blue;11 blue,4 green,14 red;6 blue,8 red,5 green + Game 82:2 green,7 blue,2 red;15 blue,2 green,1 red;3 blue,2 green;1 red;2 red,15 blue,2 green + Game 83:5 blue,1 green,5 red;12 red,10 blue;1 blue,11 red + Game 84:4 red,8 green,14 blue;1 green,8 blue,2 red;1 red,6 blue,9 green;8 green,15 blue,4 red;4 blue,4 red,6 green + Game 85:8 green,16 red,5 blue;10 red,10 green;18 green,10 blue,1 red;3 red,9 blue,13 green + Game 86:2 blue,10 green,6 red;8 blue,6 green;8 blue,3 red;8 green,4 red,3 blue + Game 87:8 blue,4 red;16 red,20 blue,4 green;18 red,1 green,1 blue;6 red,1 green,16 blue;18 blue,6 red + Game 88:13 green,8 blue,5 red;13 red,5 green,9 blue;10 red,18 blue,7 green;14 green,9 red,13 blue + Game 89:14 red,3 green,5 blue;10 blue,5 red;9 blue,12 red,3 green + Game 90:2 red,2 blue;1 blue,1 green,3 red;2 green,1 blue,8 red;4 red,2 green,2 blue;2 blue,9 red,6 green + Game 91:1 green,1 blue,6 red;3 blue,2 red;2 red,10 green;7 green,2 blue,4 red;1 blue,12 green,8 red + Game 92:5 red,6 blue,14 green;9 blue,1 red,10 green;2 red,7 green,6 blue;2 red,10 blue,4 green + Game 93:11 red,5 blue,2 green;7 green,8 red,6 blue;3 green,5 blue,10 red;16 red,8 blue,6 green;2 green;1 green,11 blue,16 red + Game 94:4 blue,2 red,4 green;5 blue,1 red,2 green;12 blue,3 red,3 green + Game 95:1 red,12 green,4 blue;1 blue,9 green,3 red;1 blue,13 green,1 red;3 red,2 green,1 blue;4 blue,3 red,15 green + Game 96:1 red,7 blue,2 green;5 green;3 red,5 green,11 blue + Game 97:8 green,6 red;1 blue,6 red,10 green;1 blue,6 red + Game 98:2 green,8 red,1 blue;9 green,2 blue,7 red;1 blue,2 red,11 green;8 red,10 green,2 blue + Game 99:3 blue,2 red;1 blue,3 green,3 red;1 red,3 green;2 green,2 red,2 blue + Game 100:7 blue,6 red,5 green;3 blue,13 green,11 red;6 red,13 green,14 blue;8 red,10 blue,15 green]], "\n" +) + +--strdsum +--v0.1 +--@shiftalow / bitchunk +function strdsum(a, b) + local s, l, d = '', max(#a, #b), '' + for i = 1, l do + local v = (a[-i] or 0) + (b[-i] or 0) + #d + d = v > 9 and '1' or '' + s = v % 10 .. s + end + return d .. s +end + +local maxred = 12 +local maxgreen = 13 +local maxblue = 14 +local sum = 0 +local sumpower = "0" + +for i, game in ipairs(input) do + local ok = true + local minred = 0 + local mingreen = 0 + local minblue = 0 + + local data = split(game, ":")[2] + printh(" ") + printh("GAME " .. i) + printh(data) + + local hands = split(data, ";") + for hand in all(hands) do + local grouped = split(hand, ",") + local red = 0 + local green = 0 + local blue = 0 + for item in all(grouped) do + local q = split(item, " ") + if q[2] == "red" then red = q[1] end + if q[2] == "green" then green = q[1] end + if q[2] == "blue" then blue = q[1] end + + -- part 2 + if red > minred then minred = red end + if green > mingreen then mingreen = green end + if blue > minblue then minblue = blue end + end + printh("red: " .. red .. ", green: " .. green .. ", blue: " .. blue) + if red > maxred or green > maxgreen or blue > maxblue then + ok = false + end + end + sumpower = strdsum(sumpower, tostr(minred * mingreen * minblue)) + if ok then + printh("OK") sum += i + end +end +printh("sum: " .. sum) +printh("powers: " .. sumpower) + +__gfx__ +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00700700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00077000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00077000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00700700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000