From d346e3341b16c0962ab3e87b8feb9dc1b6b13a8c Mon Sep 17 00:00:00 2001 From: sejo Date: Wed, 6 Dec 2023 21:12:03 +0100 Subject: [PATCH] added 12023 files so far --- 12023/01/01.lua | 68 +++ 12023/01/input2 | 1000 +++++++++++++++++++++++++++++++++++++++++ 12023/01/test | 4 + 12023/01/test2 | 7 + 12023/02/02.lua | 32 ++ 12023/02/test | 5 + 12023/03/03.lua | 104 +++++ 12023/03/test | 10 + 12023/03/test2 | 10 + 12023/04/04.lua | 42 ++ 12023/04/test | 6 + 12023/05/05.lua | 62 +++ 12023/05/05_part2.lua | 76 ++++ 12023/05/test | 34 ++ 12023/06/06.lua | 53 +++ 12023/06/test | 2 + 16 files changed, 1515 insertions(+) create mode 100644 12023/01/01.lua create mode 100644 12023/01/input2 create mode 100644 12023/01/test create mode 100644 12023/01/test2 create mode 100644 12023/02/02.lua create mode 100644 12023/02/test create mode 100644 12023/03/03.lua create mode 100644 12023/03/test create mode 100644 12023/03/test2 create mode 100644 12023/04/04.lua create mode 100644 12023/04/test create mode 100644 12023/05/05.lua create mode 100644 12023/05/05_part2.lua create mode 100644 12023/05/test create mode 100644 12023/06/06.lua create mode 100644 12023/06/test diff --git a/12023/01/01.lua b/12023/01/01.lua new file mode 100644 index 0000000..b35b594 --- /dev/null +++ b/12023/01/01.lua @@ -0,0 +1,68 @@ +io.input("input") + +sum1 = 0 +sum2 = 0 +digits = { +one=1, +two=2, +three=3, +four=4, +five=5, +six=6, +seven=7, +eight=8, +nine=9 +} + +for line in io.lines() do +-- print(line) + di1 = line:match("^%a*(%d)") + df1 = line:match("(%d)%a*$") + num1 = tonumber(di1)*10 + tonumber(df1) + sum1 = sum1 + num1 + + found = {} + for d,v in pairs(digits) do + init = 1 + repeat + o,f = line:find(d, init) + if o then + table.insert(found, {s=d,["o"]=o,["f"]=f}) + init = f+1 + end + until not o + end + table.sort(found, function(a,b) return a.o < b.o end) + --[[ + for i, d in ipairs(found) do + print(d.s, d.o, d.f) + end + --]] + firstindexnum = line:find("%d") + firstindextxt = #line + lastindextxt = 1 + if #found>0 then + firstindextxt = found[1].o + lastindextxt = found[#found].f + end + lastindexnum = line:find("%d[%a]*$",lastindextxt) +-- print(firstindex, lastindex, firstindexnum, lastindexnum) + if not firstindexnum or firstindextxt < firstindexnum then + di2 = digits[ found[1].s ] + else + di2 = tonumber(line:sub(firstindexnum,firstindexnum)) + end + + if not lastindexnum then + df2 = digits[found[#found].s] + else + df2 = tonumber(line:sub(lastindexnum,lastindexnum)) + end +-- print(di2, df2) + num2 = di2*10 + df2 + sum2 = sum2 + num2 + +end + +print("part 1", sum1) +print("part 2", sum2) diff --git a/12023/01/input2 b/12023/01/input2 new file mode 100644 index 0000000..6134753 --- /dev/null +++ b/12023/01/input2 @@ -0,0 +1,1000 @@ +291139sdvxvheigh2bm +3316xsxhpnqmzm981 +75kh2891hlb +63qpzjpn195 +jrnf3 +qpzcfbfsrx393ksbghzzff759 +2fxvxzzgdnfkzzh48975 +442bjscjgtbv96 +125lvnbcbn5 +6vjdtd1j181 +sshnxbjrt1 +5ljsxqjdxr91 +71614rkdhdszbfz +khlm3 +jnsjhqqtj64slpqntdzxp5 +68p +qtqrcs6gdqmtzn9xvpnrn +7rcdbnzfltt473nz63szr +1496qtffc +klpksqsggbrf51tdsfptnvs72 +lsx3qrmznjrfnvvzv851 +dqlrxck24kp62464 +59r3kcdsxq485 +lq277svghmsdjzbbdrhqjg4 +xx225 +66zxs8482 +4753mcmhxxtm6 +1qdkmbvvnmf64357 +94jgmhcnpjfhtm +3lzjfv37zlbgpcslvrpglq7 +681 +xxcgtrqzcjj2679jzzsg3 +1cqx6 +5tjmqldj6744fxxgsbjbxrffvzbxd +92mpcplqktt +rldf7981dfjvkvjjx +3581ightg +95643 +kfn487111mckljv3 +246lcbv9zscnjjz232 +469763 +vqvjll17784 +1fmstxpg9 +1fxtvjhxmfbgmf13 +35681bxpdfkxddkdxnt +9vkcxflcfhqx664 +3283xc4127 +951 +348v2 +658jsq69 +63gzvt738mnbrmtkt73 +31pszzgskhjl618 +llrrxkmrvz2353 +77vtqdnvf7qhjt1 +538kfrrtvsq +9fxltvtgmrlhhdkbtb7drpgrcrq32 +m5hxxkg1qfgmhndbdslvrjrnk55 +4f913bzljjkdl +7drfddqr4gz34 +76193ln +3spm3ltlkfmcdvlfxvbnlmgsnsqskh35 +k939 +jpbdrbvtpgzlfnqz4579tmnhdm62 +dfqg4ghxvnrzstd4452hzqkdpkdnb +85d67mpcclxdjvsvppkpflhxqvgsjnbsvlcgv +3cvfdcnx468xjzcdtb9 +rgcxrc99eigh2xcb +372 +tpfrhlnkdp29vgqvdgfqdg99mrz8 +82nqf5lnlmpgm29 +snqgdxsczh5983zqxmptlss97 +zvsmmlgt8mzlhvbfftqnn675 +vfvdxfx1473194 +8j71psdplqssbhvxhbxz55 +dhbtmxvfjjkdkdvr6 +mnkhzskx1187373 +7zzrt3vfcsxmqgh4 +nbkxmzzcxtpqzvt9vfc83tjqzsbq +j2 +453lz +jkrxvxl7pfq +bkfvvnrqsqfrmbz499 +81kgcgdpvqksthf9 +jqs8fbdqxzllfrnnth4 +2gfhfpvqzs6vhcvjlrc71 +782rxggpzr +kst88svvfzbl33 +6339clsnvmkd +2nfrb95hsrcqcnrvlqtnt +717dm2tdvz +kzkjqs76gqdkt +77tjsvj66fnggzkv9 +262 +53712925tw1pb +7g +889 +5xfjm +txh9zhplccmvkj2 +dzxgmrjz3dxtq3crkqgqh38 +9vngn +5mngdkpp69mtxzxjlmfz91 +6753787 +9dxpznmpjv386 +647x +271 +518fqgbmtz1 +fgl4247 +7177fvc8rkdptr4 +66bbhp89 +482vpkrtnshh15zfnpvfdl +43bmrpbhrnfpn +32vrxztxn4xt11 +3271 +5266zfzxbgq8tq4 +hbbgfhrqvxpq4341 +183xqlvnb56d2 +66628 +24kgvqpqtngmlrtfmqfqprvrxzqsxjf45rvffnntblhnr +dhmhrdn26 +grkqnbf87jpvqmhmbxljrlth635czqlcvm +8njbjnpl63 +dxstw17bqtqpjs55 +8grbmm97 +119 +bqhbdkf39 +6jbckxghxr5xh +5spsvx355 +5469dl6 +xcbgsjh633lbntcllhdjvqg1 +721 +rdfqxlh86cqkn6113 +9b7sdpqsg5gn +324565s5 +k7 +mzh3rlrmfhzzlgzclmngn57lxqnbq7 +179621 +4vgrmxqkfqtb5lvm312nsdjjhqcqs +fv98 +4pcvmdzbz67bqdffvsgvd +5131mlccggqsxq3 +1495rrzf739 +gcq3nkkgdjlcdmjvrp37 +7h4grcmgl +shjjpzcrljpmf794 +517dpjthd1 +dncxsx3drbllpfxp75chrvhvbblsnrxshssjxvztljmqgb +bkrhmrbqtzznhzdt5ccnlxvnlvsdnsk +3drxdrxsclrpt +786 +4hdbsgsj796 +558968m44 +4254rjnth3s1 +3673 +19453 +92qcrgnphbmnkr16 +dsmbgbhgrv1768bvlznv569 +4239 +6616 +fhtqmgrz22lhqrhngrjd7 +8512vd51mbnqk +spzzrkdf2 +92cgtsx9683 +41n128bfrnqclvrxghmbtdtskv +mgmqskkcgf4zrttjstmfs9ggdnbbvn478 +7jpdbdqh9cxvvzgbhtzntn59 +ljh3441m1rk +6816271 +5sffblcpghqvqx579v +986bzvsdcks +5ndsk4 +v6527dv2 +4dvvtzjvcxr3852 +bmzrnv83766bfplfcx35 +5tmkgbdrj +91tnkfc1b +cvfrdpkqtmbcrrzfz4v59cvglzjx7 +756pz +4svjpkzv6 +64766q4 +3f +1qlbcrdgg +9dzrjgr +spcsbjmfdlqnqdx34dhpzzqkcxl42 +878145cmllsqfhj +7lb73mfhnhflp +275 +kxgtbtc472tdsj +872bcb2htjjdcpprfldgl6 +8gjrxptfdsvcpj9776frbnkdxl +153bfdtfnjkhdsrz34 +xn7xxgckdztxf6289 +2qfq +nbxd75hrdqnm521nlchjf1ightlh +6725qfscgschrpjp2 +skeigh254 +5bfjpsmdl +tjdnlshngvsnrbvmch69tqnslrhmk3 +56571991c +26xclfjhbxpl7 +11h24229 +2572lpc983 +nznzdxxvrq97rphxk48tmsj7 +3lctkpmbkp38 +863pvxxntfqdcsx2 +nrzg431sdggv92 +3c2cgglrzk +ktbzmhmtx56glkfnf77 +4plzqdl2ptkndtbxpt7 +4rzcxbkpx384 +99ccsgftlfxpgvgt +153 +29fhprhfkkljvgfgfgftskpndhqxtrnfxsnd4zbrrl9 +59svdgrxzsxgqdvhhz2 +76833 +45 +5gnjc43h3 +5347 +9468 +2847mdjcvqfmjtq952 +7dlrvr7jgftqp +1hgxf9 +571316s1 +63lpch1691 +qhclhsnlgh973 +psgqpnbdhtj682vgmbbrrzhtfxqvjxzrrdfrmvs +qm67krpfgpqjtg5smjtbhfddrbvbxtnnhj4 +5246 +spfxkx565 +13pcmp1hgcqqkrbplzb57hdzfcsl +dsgklz23585gzqtrckskgspkbcz +882122725 +95qhhbml +p156qsgjvmmqdkjspn +9316 +tntlhjmb8ngngvrsqtfdhghbkxt +5483 +4795xgkjfs2 +2926tpknmfrpp9 +22ncgnnmlfxg6prr6fzrbzznsvzcn +chzbgzh7 +36hfptmhfrjlgkxj491 +7914 +16272 +341165 +tgrlhbnq782dbrspdkkpbrt23 +5ltsrqkqcfx994756vzbng +npdbn59tmlk4lqnskpllrqbzlvb6 +vfeigh2hkppsbxf2 +6qvmprfhnfs +chcdrrkstnsmsrvjbqk182d1 +xjgsvj9dvnthx +sh667hhqdvg6szz9 +xjqzfh6fhvdpxpgp724 +vcsdm48tkmkt6snpdtsfbtpbchds +3nffrsqkv7 +2jbrtfddhskblnxqxzrdbkzfkpkxdtcgxsd14 +27773475ggcgc +8128kzpmrbjcr7spnhdkx +7417 +mbcrsht8hnbkmkx335 +zlckddkg431kslt +dtdbkcjlmmlppghbg14fgkr66nvkrxb9 +412rxhqkjrqpc84qdzv +825 +ljtlkbss21bbnzkxrlh6657 +8brmhfc6z8328jmtpnt +44vxmrmrb22 +311txqngsx21zr7 +1kpsggqxvzmrc753 +9lzlzlcdmcnr247 +44lbvcxmxf29 +69zkhhjj +bngdjjdxnndzhnp5217 +blhsbxzvtncpz482191ightfzj +cqqlvkdsf531rnvzzldbtzssxb7njhfdvc7 +6566blmnhrkx76 +45zhscnznq3fvdgbmpvtx5 +9z1ghtsgnkn8blxcmf146 +3gtjft35194 +855ndhrqsvsnk2fphv +fkfbsrvk66s62 +519sjvfzgrb7nhzmzfsbxbrdknvsq6 +2qfhc45 +sndnrlkfjqgpnn97m +bphx1cvcvdghrbbhjdzp2 +gx346lbltzmv6 +4237 +48qfgnmnz714494 +xfz24pbxxnzst2 +jgmzslhmfkpxkfssxh2rptkvfplhldprdqmhxgdqqdpb +jfzpsxzq1 +3vjtbd2zdgjthqrhbcpbcjvtqbpcstqmqrmd6 +8v234eigh2bgq +12jmqnmndzvnvjzcrmphnjvhnv +1lnfnxj66 +3723thxk63 +5nz65d +72zpsfzbfjcmb717nhv +7jlx328 +kttw1223 +1hnlbcvnkj94 +683snlrnvfc2 +lfndkjtnpd129 +xqlc6 +fdtgb9gptnkvh577mtffxlc5 +33748 +654 +466fzklq4239jhjgnqbnb +gx314436 +71681ff +15299rpmkpv26 +ddf5 +krqlzrcq42 +6951chvqncsdgmvjkpgdvjdt8 +6hmhvkrzps464 +3882szcq8 +kr455qvndccc1rjcbnvshmlf7 +36czmeigh2mth +2ccnbqmnxlj61b +86317 +dnhccx8572 +2hpqccrxff1crphsxttnxgnm9qq11 +7969ggdh52cfdxq +37bqzxkpht6gshfstzdztchjrqmsdlz +9kphm39 +34518 +x988138fx +7692 +hplrjxbvcbt2 +749tfqdtbdspj941pqdh5 +921qxmrgfg66mlvkl +srjllh9cttnqj5 +6cxmnhlrkxd27hd3kqpd8 +9651xctjzpbdpb23ltn +8ktvrj85l +7hcx9srcbdrmjzbvdrxmn4 +6ltkxmhcvxv9pxstctcvgrfsrhdxq6 +kscjlfm732ht6lpbvb +5bcbhkh85tffq +bsslrpbkgk481vcb +635rzg2534 +6758 +9628 +2d527 +52fs5 +495qsc5vrvbzzkxql3 +665 +tnbqgfmjgglnhqd4gndbb94 +737gmkmdqmkggrvkdzldg62hk +117554 +1llgpqghhmsnddnhgthk24 +15bq9lpckjbtg +lqbssxxghpczz17rrghrncbj4hdcsns5 +t3479599 +954ndphjnsvxzqgfqg6 +5kqpfhbt3qvcmblsxhp36949 +198ghgzbkv3xlrqncmcg +565pmjlhgdmpjvnjjpzzqctgrr +8stdlttjzk531 +9ldnhvqqdrt27qxgltrhgvtdnfcxcsknsgkzjzbvc +6tjkxlskvg4147j75 +5ncdmtdhbs +971kclmqxkfdtq13 +8zqcsnkfnsnlhfvfpxm +66ql256 +pdpcvgsldd246jqjfjzvd +vcsvxcfdgqpp3 +693599537 +ztf58 +mggphlsjczv7lb16ssbdslt32 +9dpjljc17712 +274vstgmr3rtlztqddmnghm +2dgtpz521 +19smsqtgz1 +ppsgns99gjvpvcnp5 +937 +312cspj +73phmdnmnzlfpgchqfj37fqz +57hqxkqfd4cqmqhsfbhtt +ntzgqnj5 +167 +xbpdhv457 +73kffl112 +fjshmr656rkqbtpxqnpqgjthplnlv7dfrktxvng +8zjzvhp1228 +mgczvgctfb8tmsbtc8q25 +jjpbkl675tmbc +llprxv4 +25tvc +935 +79248338 +6vsflc +jfgx6zmtzjxxfc2pg71 +dhkjgnlxd6t73 +zxcsrtdsj9846jzcbsfn8 +hncmq88 +24619svlzhpgc +pdktnvrqqgmpllxnmp549 +4xckfzp +xpckhm45 +nff149 +8qqthrdd712 +xksghrh711245cvcnrfgtw1q +5smcb7 +mdqdktxplsqbnhz2325czjzjsztclb4 +7239xsmsvhqfkxgxv8 +33229 +6j +4dfxcvdpq13mlcds9 +47kcdglrh58zxvrrr7 +phzqhdf455sbd5 +5vcjmvzd144 +rgp1x +493228vzvlpgr9 +78pkrqbdtqzhmszzf +sndtjtn9357vqfffjpmz54 +fvz1ight4853hmqdhbskvg4 +3527889741ightl +7368ndqdk84pm +gp117zdrzgtvbv87 +374ndvnnkpqssfsm2rcnjbgkbtg9xp +7367 +823353 +2ngkzk85rt85 +479mgtknhpqqqtk948 +mk2457mcqtf +cqqxsqkx5212t18 +3dvbblknjf957 +85dntjeigh2m +9btgrgqdkb729425sxpqr +1xlnnfxd6 +1jvbhsf2cdl1hklfqlpvr6 +2p2ttjfrtrdcs +385jtxlfdngz7rgj4 +4ft3365 +74dnxqvzqp85146 +nhvltrljrp5631 +4cbzbfr53eigh2m +nbnxzkgczj5 +gvcgrxfr2rnbbnsqmksrjckcg8 +41cgrrnvt59 +7gl6xgnjcfst71889 +cmjbp56sdqbspxtbvfgxjpvb7bfsscksv +92dzbfqscbtthzfdf3 +ppcs59 +9779vczdbphxxzmvskgqhzr +3216hczhdblvbsrtkfm8kmtjmqq +571 +gkf1ight52 +tr96gntvrkjctnvhpbp9cln78 +38zzktsk9461vfpnpqmdlhbp +857k +73hxcgmh945jltrg +5qjtxcvbt7dpgfrcldmkkvztbhldfgtzb +4944 +gxhmbgjz9qfmmnb +2ppcfj82 +bdjrl2874kcrmjdbqkk19 +56szxgtql951lbpcvg26 +3bpctmgczvvzzs7gqgg448 +ssd584htkgjrd5 +9vxbsrhmcsz96 +33246 +14qqxvjhbzck69978 +543tlcfccflgkxvpksqqkc5 +6582699dbgnf +9kzfzddjxn497 +474znfnkzlnpz7 +779415vbqqqlpxcg +5tgr54 +2cmcn363flcmzkj +tvp23 +jz1trj58vxslx294 +dfcvmtpstrsdzs3 +qpzlmnjmzzvcvq38354 +2vsdqrp4fdtgtbdh2 +3mkclqbksnj9 +856655871ightl +61nzcz19p +8322ndcg94 +2x66rxshtslbfh +4vpstdq2 +953 +6379 +jdfkb28tqnjnbpfk7p +294nxtfnhqss687zrmqdzqlk +4znzlvvfs6 +gvtw17kqsqrvknnzsfgxzfzhx +21xpfhfjzrvtgtrkkmh95282 +9rdz6 +gnpcgr71795 +515727qxpgzbdtgkvtpnvclzgqqbf +fkbfznkfcc9435 +xjbngj25 +8vl48nzftbhgxvlgskv +88vzpxmtgnl329rgj +438 +37288272 +113rfrcqrhddqczvdc5 +957 +93fphqmdgrvjqjbpx1ctktzb +39mfvthllgmb6 +23bbft7762nrdl +435 +933mtfpf4856fzvgg +357382thzvxhr39 +qztw11679rmd1xhpft9 +681mstqgdvxzn7gdtrvtp24 +nbfldvhzcttk9rhdrxpjffh856 +66jzlj3jpjbj161 +17567 +69llfhpqgrld963 +353jcrc4 +8598dgvhlktbvv +2vllfmpnrjjjnxmm64k7 +mmbdhbfqq9923bshzhdknj9 +hznv78sqvxnzjppq57zskllffh +65vndfv9kzc36 +95153823 +fgqzjqt4qkpgstlbk +72957 +zzvhpbbllqpdpbsff87 +4jvpzjcrm8 +3319dcppdmpcjdvssffsssb +7sp5fjdlmpzg2lddr6nlgj3 +42zzkckvxcfzrzctsr2ljznhpm +478lnnvbfb8lsptn7 +1znsgrrnjv28phktgn524 +gnttqnlvmfhrlc98256pfgfjgvckh9 +3vgkzs83mntsnthhpszrpkh1 +5ddks38dbxvbf796 +trtpjjrqfc6cbsccnghp34rxclfrk88 +147dxdr1 +45mttxghdq19nvdbdn32 +sdtjdf5363znrv +2c373327 +hldmdhr4 +6hcrdxpnpjblngks9 +vscjsh3634 +3xsdhnkmdvdj351p1 +31nvx53nrhnrbq29 +2n678ppqntrtct +11mnpcdl +lrrzbxfrt5652533 +53vsnqxzxjdkp4nhnzsfknx615 +3ctkjzcm86vbzmqq287 +mjfc4gddfhszzk62 +328fbpcsrhlm9vkx8 +ppl153vdvfs3 +36zblcdxgrr +3mrqc88thtltkg6 +763cjznvgv13 +tnpr168398 +9njbgmznt7pkfdnrffrlhk7 +9jn663779 +cljvmznmjkdjs8jrtlrm7499 +758ncjmffmrxcjkp58 +99576 +87dcrffrhhjbzzmh7 +mrc1688mvsnrqpkqd616 +18cvcqqtdjg29 +znvlfrt87495 +7hsdnpjx4 +21kvhtmvplcb213 +7nkpdjsxvkdqzjsvxmv5q8 +68hgtxgslkhxvnlvll299bnkffbbffsntrcvfdzmq +559 +hcs1ightznbfz6bbslrjphkg8 +41lfm38 +29l9xptcbs3328 +9392348k9 +2xnhmqxcxxs5 +zvkfmqg2fb3rm +3cpcvjfcngk2 +gvnvbtvhvsmb772843 +319nlcq +jshvrzz78c2snfm9qnbdlbr +bvvttclxpqt2frkp367 +9vj97 +5qhczdqzl47 +84tvhrrtt5 +43cmrvf1vsrsklqrrzpdp5 +knnmdlrk53dzhdxjt73djbnqtfjg +qbjkkslhb2 +22546145 +8pbkqrmtzvzbptvj7nkdsvcpg +k17zdzbnsjscp92zcfhjqdtvmjnpn6 +7rjsfmz39ctpkgnm +45kjcmlxq8589lszhv +jsbjcvfcvlxs162llkphts3 +8klnmls167 +lzmqtzp56 +173 +3sz3sj8143 +cnq37978cvvbkdzb52 +j57247 +9qgpbdzjqfd5nvcgcm69 +jfjtrrhcgzgqgtdmdsc38383kvztcfnnxp +xxfjjhvrdp219bjlsgssmpsvv212 +4z9ccjjxzmqmhm61 +7fzf45hrpjtrvglprdg4cxtcjgc +2cp5zbl +czhndkczznnftdh79 +lczpbbjnh14xbskj +57c31 +18nqbmkhjzzxqsxn5767 +kcxhmcnn12ndzthz653 +485czzdxgdvfc67srnbvhftl +634445 +jtmrqj173dmfpv1182 +6bslvklq4924 +353 +hqjhndlzlmdtkkhlblvxs26vsnpkfjgn513 +l2863rhscjbqts +859gmvdrqbbr2 +748171 +952vlmdgggvss +2mmrxstxqb2287 +18srhkz1 +svjzgxrvcfjxp5485jlbtlm9 +2697pph6h +lprdrpvs234827 +5ndxhlxvrmtlkmjf593 +jpcnzt651tzdbmxzzrnxblb7tmvmb9 +7362 +815gxljlhzgb94fjcmb6 +578891rkdxrlgrbqpb +tlkkzfqp811lvbbztlchhtrfjbdm +jeigh2761 +kdtxdv9232179jhczcl +12cmjczrskprx9 +mmf5338gzczrhxpngn6zztlrx +pcxlcnmqr57jqt5mgbgjjcp8zdrzgnfrbjbcgc +633bdkqk +mfxfslmms864565 +2457mkprgbxlvzsnmn +cqf81 +7386 +97pgcfrnvzzmll75146 +18cbprgf +751sjzlnlvcksnqzlhc +2355171ckfcrld5 +3kxzfcxzjpfz92mltnrnn2bzhzgcg +55xjsqskhdx293267 +9238ktdrmpkh4bl +9f +vxstggkg747 +7jkpsmkzjrtrhcd99 +g496gxpchmkz +5642lvxfbc +323cck343 +257 +5cgxqrcbd39hxbkkzsfpm7 +8gjftmm63 +8tjfpxbplxm35rrbppjfjsts +913db +4nz74668dpfk3 +445 +34cngqmpkdtmnvfb74l +slvb13 +671 +8g4qvrdkjhsbn +3183659sqczjcm +jtnddjsbc73929dvblpcl +ppffnzsbmnzctdjqttrxz8z13 +7r +vhksnh92962bfdtmrfxbn9gtxkrnl +zf1ight1 +96123vcjjz +99vknnqszvvm7 +341fsxgqvcs2 +4mssjszkkz14628fhfgbkkkx5 +4337bx8lgkvgvjjpxzcmfvn +2tlxxhm64499n +7xckrffbmzf757534 +29tljfcpnrzkh7431ightlgc +58x9384 +56349 +thfc37fksgkkkn429 +4jtbckvmqc +1534 +3xcc84mtvkqdchjx +3sthrzbjbxpcsdhjmfjztbgknrpb +15xtcmx96 +1639lkj5 +2vlxkxbqrjs611mctzqzx +n41ckrgnz +41jsmdn +615 +264gqqz +fqcmkbhjfn259qhqss1ssvmc72 +6785rsftxhhnknjj +3758ntjgpkxbmkqxhstdq6gjbzxqjsmm4 +qxnslq294gddrlkvdxqdqkcghfbg71 +ntdvbndqqvmhtrzvvcdlqz1 +lxkbqjc7887ddzq7jst +11vlvklqqgsxhxng77kljlpj53 +17zxn +3889 +1mzdc76 +13dttxqnfdv3jhc2 +7jxhhlxfsxzkqz217c +thmbtqqmtfzfnftqbsxm68mhf57 +91bd5dfzqfpsx42 +41vszfmdxmcrzmpcks633dt +5k87 +29hjbcgdm1 +94qsf +stw195xszrjm827 +92krc67znqcbdvpntbjzcbm42 +44hq89rbrtljfgq65flslbbxxheigh2bhv +381774tstspnczk8 +7nfd9 +3zngvkmj7mvksmsvjxj58 +9x9pctct77qqqddldd3 +kdbx6798fvsrhvxm2lmxpxcm8 +1497 +nch96gtszxkhtsvzjcnmlq9vkkrvv +8sh2p8gbzmbbdnrtpmrl +856hb44rldcdnqn8 +xbjhhjbk4148bmsvjz819 +7qqvmxlqzqlmrr +191445 +8723nfmbfnxdhkmgjkrmsc +8576vmfjprpm +8fpfkxffqzp8 +95hbbl29 +pzvhmkdgqp1dhsrlv78bmvhdqfcgcpdtgtpmmlnmk5 +1616b68dzz +79nvmbjknplx757sfghptmq75 +xxztw1614gczrnpzrsfqqlz717 +xn594l5162 +5rcg3qkgdxpdxcp1 +6dqkhhht46ghvd814 +zvpdmfvgxl459 +744bmjssxznnmgtlqhptcb5 +449nlkpfxjc981 +zdgtfqszsctjtvr7qqhvs97xtcmdhfzxvfrtjqhzmm6 +542gmgmvzkvgknfpx5 +221 +47896k83 +7cb +8dzzjjknbxv5 +dsmg47gp4 +55386xqnrsfxxmjckfzhddhszqvdjr +3jpsrxlv947gtjvk +bfdtkgfhlnkhdrpfg3 +qhzdz66191 +475qsbtrb9mhhhhnbl +s8hgddd27598h +9mg6rkmhdpjtzg591 +892p8sz9 +3427c58 +361946qksfflsvhk21 +81x76vmhxm +7krvrd5d466 +rzqrxmq21 +75gszfc8vrj8 +hdgclvmgg332 +1dv8rvdxbfjclr +grrhj395rhqt +6nvtzl6shxrlbmrqck744 +4847ks6hdvvbszkc86 +4sctcndrchdb42zpdkjc3vqv +874136tblzsnrrdvqmpgpfb +1pgmgczsgngx +475 +2jkfphlzqhz +4576 +1gnbrs8ptrgdfkbqdcv21qbxj +43znd +8221 +798 +372dbrzxbfvg4 +49378ctmzkxkkzr +5mtccqv231tpggmmzbhlvkt +qpjvmgqxcj268 +ttmz2zrfqhfhgkp6pltknxmcfqngh +1gnztn96 +6ngsnzbfvvt127462bqhbkgkr +1jnplq3 +hml254vjkkdjjksbdksqtnr2trxnkltgp +1945mvgjgjn8 +358hx42 +bsmgfvnt7jlsrdvbq +611538nvp7zthbv +jmfpnrmr97gsqggg7 +mkvgjdjhv71881ightdhq +3ccljpjh326923znj +1pjkbks6135ffj +ctpdddkxtstvzcgbfdfspbl113kvsltblvhx4 +96zmzkjlpc6sqt7gkbdhjqn3 +2517krnfbfjpdj1ftz9 +mhfdxzqlgjfvfxvm7 +1rhznqnpgkqbtprvbb +rhxskjqrt21mppcsktz6 +jhxsrxzggg52479 +8njzddrjppq51tw1btl +2161hlfmxkjpfxpkfkhbkjhcvjct58 +zv936djkfn6 +smx8 +fdrx8j736dflczzmgdr +zvzrb5262 +9931757 +918922956 +1ljpljm9597eigh2lsn +5bphjdgk274 +786 +mjstvsjrltx37kddd +kljfvvmxkrkcctjpnmrv876 +9814dkkcsvg417 +dvxbzxxks1fjgfppsd18 +63qfb185929 +sgktnmjj75 +442 +jbp2rxzzmkhmszn1949 +lcfpbvkkgnggtkh8314tsvrrkcnvdpm +818hgr +jhklkvm6vqpvjdsh +lcgjdkm5578kn9zsdcp7 +6984 +qdlpnqm7mbtgbvqznt86fz9crrgqsq +tdmj448578 +1gds3 +39421zctqjj81 +ft4121phv5 +nbtw1xjpnqtlck5pxmfzbvp5584bxzxrrstp +692mpcldclfvklh5kmggqbtbk +134chsjrknhd2xqjcgssnq +dcpjkkr3qpncsbfpmhtmtfvzjzmps8cltmhqzl4 +29lr33rzxqhdpcmf36 +5nfsrrh17lcnrblxjhjsmdndp3vjphjqlznd +86kdqz8fhsxfkxvds8msrtrrc3 +1pmpzsjdqnm78frzxtbxkdkdbzbxqlhg +crpxx27cck +19hjngzt +5883221pqr +1gmc337 +8zbchgxsdpq5jf3eigh2flt +n99tkffffblk1766 +cgeigh2d39pqkmkbbpvn38 +svjhcngvlksz4dnvfg +26t57 +cf193mhvbpqrbbklfvr86 +8tmltbk3hgtrtb +26t219slqmt65 +df1ight9grxcgjmjdqlpdjskllzpltq2jg64 +6934kqfzdpvtbxqpk26 +786447 +7264ntdhcphx48tw1dbn +tbbcskrmmj4 +xq9328 +scq9qbtzp +44ccftsmnxpj951431 +gvs286jvskvvzlhc6 +nspgkhf119fdcqjtzmlqqz +81zqp +697994 +5jnnsgrhnmjmttbkql8 +785169btbclcrrpz3 +1185383 +9321ddslmdlb51fgdmz +392zhclzjfjg79 +86tqvrfmkxmhldbvv +2grldddksg178 +722dgjzqdlmmfvtxnnglqxbgfhgvglrg1 +1r676pkkm9gff +3lvkx515qthp53 +5732llxsgz8 +43jftmvmqzql8nscjvph1735 +4chjvr94 +49946 +797cgdnx +7mfqtmpb9 +3835bjjpgj +kn4lpfd14 +989krvcbcvqn +2462 +81hrrhxpmlpnfqtlxmfzps +vz1ight2gkpfczjmht5zlfxmnkjfq +mpd15 +nv392 +mteigh2t46552369 +httw123513 +19kphlcks4nrkxktxvz9bkfnq +4618 +66crcj12 +bcrsltzkd648cjzmc27 +rplxlbpddn8vqdclxqqlh3hlkhkgrfvl9 +6djdhcvvnnccp7khvqp1 +qj7987374 +3512pzgbnmj1 +2kbbhjm7464 +87331vkmhmjvcd +2rxdcjpzkph +297pbhcbklcpn63 +79764zklllpckrxrcpctlgt +555n6 +2fjf56g83 +74pp5tpmc41 +kftkjnhnms5hbngpqhxc1 +1dnrr77 +fhjcmxvpbsr99 +7413ckvp +1523 +5292 +xhtmrmdzkg7fkkzmqpg1qqzdhpbd89 +ttnzmptlskm5pzvdnc15sqqcmmvx4 +7ndb +55bxxpvjhkqd64 +142chvtxrdcslbsrggcxvjpg +273 +9cgfnrxprbz29jrhbgsczrhlxn6 +tfljdjcpltgzhmxv9 +71ctrzxbkhhqpgc +2138rskmzsmzhcdbxp2pztmgcg +786934 +57lgspjnhrsmvmeigh2lj +vtqcrtjmtkmvvnmm9187kclsrqrf +55tslmr1fdsdxr +788 +gsvbn9424zth5 +nqkgjlqgqbng5rxzbkhzmzcgkrsblfnqstxlcg +9znzctbdf291 +mrngnmkdjv487vprcvllqq1 +9cxctvm54621blbfctsg2 +763hzhbmb32 +353 +sfsncqnp342xdm9nqqhd4 +47gbcslngdx385lhkslcjhq5qjmvchc +54hnnkk314 +73853713 +sjqpktfsn3tdjflb2 +19gn1 +rvgcmzhffrntqqnhjxtxqrmvbsrt834 +7slcmpmvhfhpzgllr5ktnzm71vznhnnbrcc +26941bzjrmh83fgcr +9734zlqgjnrmq7xcmntjncnt6thlgq +7819fbphndppb8tw1bbj +8xblvnvrtpsmcngtbtl26h8prccv +68632 +49672925 +2555 +4212nbl +kbhrtpgnp6 +nsfktqkbzdcmgf28 +b289829 +cpcrbqzmkbtcjmn586 +13hlgmgphkcnp +74zpbzmxc +87736gdcnmrxn6vhvkmc5 +199hkr6 +3ql171 +8hhq9cbptsljhz7hzpxm +811bdthldf683 +71fxlhzxcmhc4588jlcms +48skgslmflkhnpqt6 +rgrdzx475 +1fxfxhslc9hjxkdqjs639 +57132sjnvt5 +925l83 +325nlbtvsmv6 +3589 +mjnch2sdbh72923 +hdqffz737cqv +73xcqzdt7jvkkskpg95 +239ssgntvctkns2kqmcqdvjt +dktgqszxcptlpxpzl6812qlxk +pbvvfjlzb72 +qtlfxzplrrcjfr69 +7gs3plhxbbmrht953rxpjghgjq +2bmmjrzzjnz9dfplppnjmktzc6rpqxcptskjkfqxgx +5drtnxnjqxnt2qtbvlj +j889lnjlsnzsqk31rg +hcfxflqvkvdfmthkjdpfzzlzzh4kdmmhvspzdd53 +5qsl +9836xvjktfzbpglmz437 +462 +zqrlljp215knbhf7266 +5k65blpldztzjh7sghcsdnpm8 +648 +skdpdfqtglzvlpqxp3tw1lcr +2klhnd76jdhcsccjgp68tw1lb +764798 +gn2c595794 +196478 +749264 +31gsjtkjdvjdqnrsgnpbnxsdrzmtskfdqhd +7829tfnxhlx8bt9 +xttqntsdmv482 +zbjb8fhbhcfkbhrthqhg63115 +56pfnpmcpfppxvsfprxfbfc74 +2543xgvhzdkzfh +4xdpdpkldnb1 +987dhjzlddn592brfmbshn +7783298 +144 +44ztn318mqmd4 +fbfvqgvqf15nctdcdpt82 +dhfbh144lgzftg diff --git a/12023/01/test b/12023/01/test new file mode 100644 index 0000000..7bbc69a --- /dev/null +++ b/12023/01/test @@ -0,0 +1,4 @@ +1abc2 +pqr3stu8vwx +a1b2c3d4e5f +treb7uchet diff --git a/12023/01/test2 b/12023/01/test2 new file mode 100644 index 0000000..41aa89c --- /dev/null +++ b/12023/01/test2 @@ -0,0 +1,7 @@ +two1nine +eightwothree +abcone2threexyz +xtwone3four +4nineeightseven2 +zoneight234 +7pqrstsixteen diff --git a/12023/02/02.lua b/12023/02/02.lua new file mode 100644 index 0000000..e891acd --- /dev/null +++ b/12023/02/02.lua @@ -0,0 +1,32 @@ +io.input("input") + +sum1 = 0 +sum2 = 0 +maxs = { r=12, g=13, b=14 } +for line in io.lines() do + print(line) + id = line:match("Game (%d+):") + print(id) + is_valid = true + mins = {r=0, g=0, b=0} + for reveal in line:gmatch("[%d%a, ]+") do + r = tonumber(reveal:match("(%d+) red")) + g = tonumber(reveal:match("(%d+) green")) + b = tonumber(reveal:match("(%d+) blue")) + print(reveal,r,g,b) + if (r and r>maxs.r) or (g and g>maxs.g) or (b and b>maxs.b) then + is_valid = false + end + if r and r>mins.r then mins.r = r end + if g and g>mins.g then mins.g = g end + if b and b>mins.b then mins.b = b end + end + if is_valid then + print("valid", id) + sum1 = sum1 + id + end + sum2 = sum2 + mins.r*mins.g*mins.b + print(mins.r, mins.g, mins.b) +end +print("part 1", sum1) +print("part 2", sum2) diff --git a/12023/02/test b/12023/02/test new file mode 100644 index 0000000..1cd7d33 --- /dev/null +++ b/12023/02/test @@ -0,0 +1,5 @@ +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 \ No newline at end of file diff --git a/12023/03/03.lua b/12023/03/03.lua new file mode 100644 index 0000000..e289845 --- /dev/null +++ b/12023/03/03.lua @@ -0,0 +1,104 @@ +io.input("input") + +symbols = "[%*%$%+%#%/%&%=%@%-%%]" +ast = "%*" + +function coord(r,c) return r..","..c end +function add_pot_gear(coor, num) + if not pot_gears[coor] then + pot_gears[coor] = {} + end + table.insert(pot_gears[coor],num) +end + +lines = {} +for line in io.lines() do + table.insert(lines, line) +end + +pot_gears = {} + +sum1 = 0 +sum2 = 0 +for i,line in ipairs(lines) do +-- print(i, line) + init = 1 + repeat -- find all numbers in each line + o,f = line:find("%d+", init) + is_part = false + if o then + num = tonumber(line:sub(o,f)) + -- right + if f<#line then + right = line:sub(f+1,f+1) + is_part = is_part or right:find(symbols) + + if right:find(ast) then + coor = coord(i, f+1) + add_pot_gear(coor,num) + end + end + -- left + if o>1 then + left = line:sub(o-1,o-1) + is_part = is_part or left:find(symbols) + + if left:find(ast) then + coor = coord(i, o-1) + add_pot_gear(coor,num) + end + end + -- top + if i>1 then + prev_line = lines[i-1] + colo = (o>1) and (o-1) or 1 + colf = (f<#line) and (f+1) or f + top = prev_line:sub(colo,colf) + is_part = is_part or top:find(symbols) + + ainit = 1 + repeat + ao, af = top:find(ast, ainit) + if ao then + coor = coord(i-1, colo-1+ao) + add_pot_gear(coor,num) + ainit = af+1 + end + until not ao + + end + -- bottom + if i<#lines then + next_line = lines[i+1] + colo = (o>1) and (o-1) or 1 + colf = (f<#line) and (f+1) or f + bottom = next_line:sub(colo,colf) + is_part = is_part or bottom:find(symbols) + + ainit = 1 + repeat + ao, af = bottom:find(ast, ainit) + if ao then + coor = coord(i+1,colo-1+ao) + add_pot_gear(coor,num) + ainit = af+1 + end + until not ao + end + if is_part then sum1 = sum1 + num end +-- print(num,o,f,is_part) + init = f+1 + end + until not o +end + +print("part 1", sum1) + +for coor,nums in pairs(pot_gears) do + if #nums==2 then + ratio = nums[1] * nums[2] + sum2 = sum2 + ratio + end +end + +print("part 2", sum2) diff --git a/12023/03/test b/12023/03/test new file mode 100644 index 0000000..b20187f --- /dev/null +++ b/12023/03/test @@ -0,0 +1,10 @@ +467..114.. +...*...... +..35..633. +......#... +617*...... +.....+.58. +..592..... +......755. +...$.*.... +.664.598.. diff --git a/12023/03/test2 b/12023/03/test2 new file mode 100644 index 0000000..b20187f --- /dev/null +++ b/12023/03/test2 @@ -0,0 +1,10 @@ +467..114.. +...*...... +..35..633. +......#... +617*...... +.....+.58. +..592..... +......755. +...$.*.... +.664.598.. diff --git a/12023/04/04.lua b/12023/04/04.lua new file mode 100644 index 0000000..87473a8 --- /dev/null +++ b/12023/04/04.lua @@ -0,0 +1,42 @@ +io.input("input") + +sum1 = 0 + +cards = {} +nlines = 198 +for i=1,nlines do + cards[i] = 1 +end + +i = 1 +for line in io.lines() do + pwinning, phave = line:match(": ([%d ]+) | ([%d ]+)$") + winning = {} + for win in pwinning:gmatch("%d+") do + winning[win] = true + end + points = 0 + count = 0 + for have in phave:gmatch("%d+") do + if winning[have] then + points = points==0 and 1 or (points*2) + count = count + 1 + end + end + sum1 = sum1 + points + + --print(count) + for n = (i+1),(i+count) do + cards[n] = cards[n] + cards[i] + end + i = i + 1 +end + +print("part 1", sum1) + +sum2 = 0 +for i,v in ipairs(cards) do + --print(i,v) + sum2 = sum2 + v +end +print("part 2:", sum2) diff --git a/12023/04/test b/12023/04/test new file mode 100644 index 0000000..9bdb874 --- /dev/null +++ b/12023/04/test @@ -0,0 +1,6 @@ +Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53 +Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19 +Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1 +Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83 +Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36 +Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11 diff --git a/12023/05/05.lua b/12023/05/05.lua new file mode 100644 index 0000000..19f9c69 --- /dev/null +++ b/12023/05/05.lua @@ -0,0 +1,62 @@ +io.input("input") + +seeds = {} +maps = {} +mapi = 0 +for line in io.lines() do + if mapi == 0 then + s = {} + for num in line:gmatch("%d+") do + table.insert(s,tonumber(num)) + end + table.insert(seeds, s) + end + + if line:match("^$") then + if mapi>0 then + print("result") + for i, seed in ipairs(seeds[mapi]) do + if not seeds[mapi+1][i] then + seeds[mapi+1][i] = seed + end + print(i, seed, "->", seeds[mapi+1][i]) + end + end + + mapi = mapi + 1 + table.insert(maps, {}) + table.insert(seeds,{}) + print(mapi) + goto continue + end + + if mapi==0 or line:match("^[%a%- ]+:$") then + goto continue + end + + dst, src, len = line:match("(%d+) (%d+) (%d+)") + dst = tonumber(dst) + src = tonumber(src) + len = tonumber(len) + print(dst, src, len) + + for i, seed in ipairs(seeds[mapi]) do + if seed >= src and seed", dst+diff) + end + end + + ::continue:: +end + +print("final") +for i,s in ipairs(seeds[mapi]) do + if i==1 then min = s + else if s0 then +-- print("result") + for i, seed in ipairs(seeds) do + if not nseeds[i] then + nseeds[i] = seed + end +-- print(i, seed, "->", nseeds[i]) + end + for i,seed in ipairs(nseeds) do + seeds[i] = seed + end + nseeds = {} + end + + mapi = mapi + 1 + print(mapi) + goto continue + end + + if mapi==0 or line:match("^[%a%- ]+:$") then + goto continue + end + + dst, src, len = line:match("(%d+) (%d+) (%d+)") + dst = tonumber(dst) + src = tonumber(src) + len = tonumber(len) +-- print(dst, src, len) + + for i, seed in ipairs(seeds) do + if seed >= src and seed", dst+diff) + end + end + + ::continue:: +end + +print("final") +for i,s in ipairs(seeds) do + if i==1 then min = s + else if sd then count = count + 1 end + end + --]] + c = count(d,t) + mul1 = mul1*c + print(t,d,c) +end + +print("part 1", mul1) +print("part 2", count(dist2,time2)) diff --git a/12023/06/test b/12023/06/test new file mode 100644 index 0000000..28f5ae9 --- /dev/null +++ b/12023/06/test @@ -0,0 +1,2 @@ +Time: 7 15 30 +Distance: 9 40 200