diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..496ee2c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..05ce592 --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +# Advent of Code + +Hi all! + +My AdventOfCode is `node.js` based. + +To run any day, type `node index.js ` and it will execute the day you inputted. Make sure you fill the relevant `input.txt` file with the input for that day if you want to see your own code. + +To run code using sample code, type `node index.js sample` and it will execute the day you inputted with the sample input. In case of 2 different sample inputs, like day 1, it will automatically find sample2.txt for part 2. + +The current main branch is 2023, but code from previous years is also available. + +In any solution you can replace my input.txt with your content and see if it works for yours as well. + +I am always curious to better solutions, so feel free to PR on an existing day any improvements to the code. As long as they're actually improvements, not just for the sake of shorter. My code should be production-deployable (in my mind) so they should be easily readable. + +For this purpose, also read [my article about 1-liners](https://javascript.plainenglish.io/we-need-to-talk-about-the-one-liners-58f460c05fc5?source=friends_link&sk=102a7a363db7988174bfb87666f63ecb). I would say I prefer longer code as long as it is readable. If something can be faster, then of course it should be. diff --git a/day1.js b/day1.js deleted file mode 100644 index c874e4f..0000000 --- a/day1.js +++ /dev/null @@ -1,37 +0,0 @@ -const fs = require('fs'); - -function findSumPart2(nums) { - nums.forEach(num => { - nums.forEach(num2 => { - nums.forEach(num3 => { - if (num + num2 + num3 === 2020) { - console.log('2: found match', num, num2, num3, num*num2*num3); - } - }); - }); - - }); -} - -function findSumPart1(nums) { - nums.forEach(num => { - nums.forEach(num2 => { - if (num + num2 === 2020) { - console.log('1: found match', num, num2, num*num2); - } - }); - - }); -} - -fs.readFile('./day1input.txt', 'utf-8', (e, data) =>{ - const items = data.split("\n"); - items.forEach((num, i) => { - items[i] = parseInt(num); - }) - findSumPart1(items); - findSumPart2(items); -}) - - - diff --git a/day1/index.js b/day1/index.js new file mode 100644 index 0000000..38b34ba --- /dev/null +++ b/day1/index.js @@ -0,0 +1,52 @@ +export const part1 = ({ input }) => { + let result = 0; + const regex = /\d/g; + + input.forEach((row) => { + const matches = row.match(regex); + result += parseInt(matches[0] + matches[matches.length - 1]); + }); + + return result; +}; + +export const part2 = ({ input }) => { + let result = 0; + const regex = /(?:\d|one|two|three|four|five|six|seven|eight|nine)/g; + + const numberMap = { + one: "1", + two: "2", + three: "3", + four: "4", + five: "5", + six: "6", + seven: "7", + eight: "8", + nine: "9", + }; + + input.forEach((row) => { + const matches = row.match(regex); + const firstNumber = matches[0]; + + const first = numberMap[firstNumber] || firstNumber; + + let lastNumber = false; + let count = -1; + + while (lastNumber === false) { + const testString = row.slice(count); + if (testString.match(regex)) { + lastNumber = testString.match(regex)[0]; + } + count--; + } + + const last = numberMap[lastNumber] || lastNumber; + const sum = parseInt(first + last); + result += sum; + }); + + return result; +}; diff --git a/day1/input.txt b/day1/input.txt new file mode 100644 index 0000000..2daa7d4 --- /dev/null +++ b/day1/input.txt @@ -0,0 +1,1000 @@ +twovgtprdzcjjzkq3ffsbcblnpq +two8sixbmrmqzrrb1seven +9964pfxmmr474 +46one +7fvfourgkfkkbloneeightdrfscspgkdrmzzt1 +15two6six +htxxfmfd7nb +sixfivesixeight4pfsgxvn9sfjfk5 +pmjjpggvhkrq2 +tvbrkhlxdsnine65 +four5gkrptqninenbdvffour1z +foursgnlxmjtcrrfour7 +3onetwogkhmllzvrsqzhhnkvdg +nineninegxknqzpsix28 +1seven85189mv +gtwonejcncdlhpsxjrxnmpvfgtdrcdtd2nm +1ninemxzntjptl +qcmqfour2onesgplvgzkdltqtvzhtb1 +seventhreerxqvgkzqhfxfdhnp628zxtbjklkpdtwo +fjdsgcsqppzdthreefour3one3lvmpm +sixsevenfivefourxf4mzhmkztwonepzt +nineninesixskjkbhx6nineoneightj +four6nzqxhhnrg +86fiveone9dhrkkh6 +8ninetvnsrcsbpn +two43one +8vfvbrnclnmthree8onetwoeightthree +one2czxjgbzsn46ktj8twones +qfnlfivemqninextzppkfkb8 +ntvcmxsevengxdtc3five +8lsfkbbxkscc +seven5817smvjfpdktwo6mdfngz +92hqxbchfpnine +tvxbltz53oneninethreeonek9 +hvvjhd1 +six1six7sevensixqcvhsfour7 +seventwo2 +2svpbhrlhfjhbkf3fourvvspkfmbvztmtpcxndfnine9 +fivefour42 +sixvstzdtfive3qzmbbx +rfcxmthzlgxgrmjncszdvlnp6 +lhlncfjlhrqrfzr1 +cqnkmtfj5 +tctfngvrxljlt53pntbcfrftjpjvzqbqxh +6fgcdfive +4834sevenvssix1eight +rpxcthbpmhgrcxk4 +threecthhnine781 +pppqkscmthreeseven1sixfive +2tgrmvxpthree6 +7ckxjmlpkqqqjtfiveeightbmmdoneighttnv +six2two +lsshzhtdfour24 +mrjjgzsb92fivetwoxh3 +5fourcqhk3two85fiveeight +lsxpkxfmq97one +b87twosshtxkkplq5zkrrqcmfn +threeqsnd64hthreeldbtfkqpbqpdlmtwo +eight2one +14r +71fourzrmsevenseven9 +threesixmmcjzzml4 +stnmbsix41 +cztnnflpcl4txplfour +five6six4kxv +5oneqmmbnvgvbq6vsncbrjrsix7eightpzkhvrjz +kflckfgxfeightlr37fourfiveseven +9three7three +rkxbqnine7onevvqgzcvvjthreendkddfournine +fzzfstwo44vm +19648 +7fivesixhdxhlgmv9 +six9hzlctfiveonefour +66eightthree4nine +jcgk8three +tbctwonefive2eightsixbntmjceight +ninemrqkzsevengvq6 +rsmmpmrlmq92fourfour453four +6eightbmjhnpbgnccfninefonenineglkfgp +8onefive7kn +eightrgzfdksevenftbvkt455oneightnl +3vxtwogxpdhjmqskjc +shzvnlgvvvthreenkv14eightbcmjd +2sevenlbq +1zfjpz1mdfourstvj7zpfxxlqf +twogm22trvplbsk29rbjtvctqr +twoqpgcbskdgh2tktbbpnzll7twoxljpdhthree +5nineeight6 +936 +218ptffour +1clztnnsix1 +bsevengsxbpjmbg5eight +1cpeighteightpb +vrlnveight2twopxmtwo +fgrjr8six +5sevenspppgjtxbtqlzt +5sixczhncsix2qcqsevenfive4 +kgcdpqclsggzm79nine +eighteightone6sevensixthree +92eight7plhftxkntl1two +5dqrhhqrrgmvrqznbgx4three3 +twoone953cdkm5stzdbdh +heightwothreennzljtptwo94 +6sevensevenfoursix5nine +cnbslkngtk9five58xpqvgjpqrnpjnzbk +onebrcg1bnfivekftnzpclqxvhchloneightzrn +four855dpknm +4hkdseventggkffhrkvsixcrsqjsix9 +8seventwo +two9sixthree9cdrmqntmcv +525tg4h +five7kxrlmq1bzhdmhtgglmvzrtfbqqd3 +bnbbsbhlcbktsqlpq69ninesfxhq +gndxnlmnrmnk29qkfxfoursnnbvjtq +5bzppjrgcpk +2three79pmgtcgmtdf2fjh +sixmmpbmtznseven62 +4rrm +ztlthreesix28ninesix +j7fourfourfbrlxplk +zjhrqtqsix1 +4three6hhndrlszfrgphcbonenxfive +jmg8hfsxfsvdxz3four7jfbczjmdhbpn +39ptfzqjfpnpxrnf7eight +three6jrcrgpfxg8vxgk8 +57kvbczxn5eightfour +8xbdbrbpjp +sixtrhhl2tktvvmkffl5 +three6fgsjtmnine54sm5k +ninenine3stfpft2nine +one61onenrhmtwos +pzdq8 +pltd9sjdkrscxr25 +dzsldkmzd1 +vlvpfmz24sevenshcrvx389one +1rfvlnmfkdbmdjj +sixbzzbftqggn8zggtbcd +hzxzjhkvd5twofivedxfdlrdeighttwo +six9nlgcdznskrsb +sixrxkfhvsjxzbt4fivenineninenine +dsbmqpgmf8nine634two +fourknfzpthpf1 +two9twovbmldd +5zgnnrxtwo2two2 +fivezfvzfdxkmrbvtpdhqbmdhcthreedvlstmq28 +ppfqqq75seven954 +sgtjpsix3 +twospnc9cnchkzthreegj +3eightwoqs +goneightghmkgksqfk2two2six +sixthree6bjzpqlsbgq2rkbffxtmprpddkxv +rkv43 +bzfnbq8onefourthree4 +3mqvr +fiveninefflpllcqzonejqqbtwofive43 +tvoneightfour3three5 +mvhlv6bzbjggrsvvxh4dfcpmrnhnq4 +fcrsmfmpnmkfs3fivekblglhqmvfourchc7 +svfmfbdrgd81one4 +mf7threetwo8nine1 +qngfr4gnnxbszqzsixp +px5gfx7two5seven9 +4gp +8lxkgvpzxch6 +3mdgqrvtgnthqnhpxteightfour +onethree899btbpjnxxjhone +fnjdzx5vrzc +four5twofour +9fivetwo2 +threezlpsdhxvdlfpsvkxxnnine3 +hvnnq9two2fourpdjv +bvjkdg9four1 +2412 +threethreeszmhdndctj1eight8lcqtwo3 +cdnmjmxqrz6vrkkxtfour8cc +njldrqggdnfsix5 +9csxcksh6three697 +92four2sr32 +3jdpqdjjct44oneone75pjgkgv +576sreighttwosixxzqmj7 +twoscdxdlfddmfive54 +ninefiveznine33 +threenffnvx3 +916tpsgsxmtml8 +6five3 +fdztvpctnr5dmbjnrjslr +16four +4oneightk +three5fouronenm +threezrksvlbdb891zfbbcdrbpd7 +five821ndfftdbmbr3nine +ninehvdxftmgcvnkrlrvmmbb4nine +xkkzphgfv1two +3pm +ninetwobtjxdvnhv12 +fiverbkmfbx8fiveeightksjzphkrj23rdlrtnb +kseightwo2fivesix +5snpchthree3 +71oneone +6frxncksfxboneftdpvmnfdfxreighthrmnqc8 +two48mhgdtlp246four3 +993three8 +threenine7twohbmcrpd +9bpdccqbts +kptwonejntgcdqdfffour4twobvtxnhqkl7 +1637sevenfour +soneight6lbcrzdmhltpbkbjfivechxzfrqqgfeight +99five3hjvjrdmgl +qncqlreighthkfmbbfqx87five3 +7jqkdsfour +ninemmvcxlkcrg1 +mkdhgzcvmseven3onesnkhtxbgf7threestvjqn +nttgqsmsl4five1eighttwo9zg +one2ninefour5 +bdfbveightseven1lcrshdgxznineeight +qsnvsonezqhsjmfive9one +6kvdrgkgznf1cmklmxgnine6 +xkmzzdpknl661 +ninefoursix7gnbmzd37 +mmxmfnsrmt2bnhkmftxnjsix +fmhsrdtnrxlqgjttlgvmqxgzpl756sixllmdvblrvrrzkqgb +7xmppbvd976dqt87 +fourzdctfglzzf1xdbfmrbfeightwor +8thncgqzvr989lthreeseven +5qmrzeight169 +4qgvkmninegcsdgcthsp62onehczjhdxcgm +25tlppkmctwo2 +668four4 +rjbxtvfktchflstwo639one4 +seven6eight4onehfztk +five53 +nine33threethree3pznjbtxjmrrxm +19six +fivethreefivegxcqflqhjrn3fivehcn +vpbntqnpkjfninesix6341 +7eightb7 +bktffkqsx6fzvpnjhk +38jrjprtwo628 +77tplflrp7 +4one9one6 +pkdhkbxrbshccxgknrjgseven44 +49rthxdvlmeight +5twodhkpfn1 +znine2fbsmeighttwo7 +5ninexvmg +dbjbfmqtkp66 +mdsrdjdnxkzr3xfm +two9twofive3 +9kfivetg2five18 +6fivenine2 +2dlgpxsq7sixone6 +tnqxgjbnc9bhqbgtwodxssml +18sixcjthreetdtprgsix +65sevenfive9nine4seven +nine34fiveqjdqc +threetzvxrb5vspdhrmjcnhtrzkqhd4 +67nine8jrxt39 +443oneklzsrtwo4tbbvxblk +xp7fourseven +ktsrninemlldztwo5ghqfgh55 +five6eighteight7mtstgjlqmngzonetwonec +rmfourseventwothreedjtvf9 +rlsgqhhvcdvthreekzjdssslmsixfour5rxk5 +sgnfjqm4fivefiveone87nine +6twoonefive +sevenrftrnqrjs1 +bcfgjklzfbnineninefivesrpcqtwo4 +threek7seven1fxslmvnhmffqqvbfbhlceight +sixxzqz9fivethjgdv2 +nineonefivesixtcrjd5 +5645ptsjfrszgr8 +1threezkpgczxr8four3oneqm +tvlfrfcnlc56eight8ninesix7seven +7clvmrdvdgjg +7mcstlktwo +dlxlpchr3eight +3ninelrzgkhx85 +jlkqzonefourrvlptlxxgrthree4six +rxhpprsqtd982t +six4671nineonesix9 +eightsixtm9vngskjglgvrbsqgcmxczbqqvxqxfj +vxfmc1six1ninesixnine +39fivesixthreevmpm4 +xllclztxcxjskgfourlvggrvr25fourthree9 +31sevensixninedpfrvvfftc +three64ctshdpcsfdjth95 +fourgcqf8sixfivepsrdqvrld +5nine1qldrqhvfour +5three1three +6hjbgdqjtlppzoneninesevenqlmvgkq +eight1three6sixthree5two9 +17141oner +five1two7 +sxcfxblvfbtdtlkdpnineztnsfdkmeightvrr7fivejj +eight183krc8nkqk +sixthree38fourkgfbbv2sixsix +922threeeight4moneightsm +3threefive8bdzjs +onechvnhrfthreebqfive9 +8sixgkvzgnfkjrrxrxvbvgvx +meightwo1dnbbpzrxftwo8 +253lqt1bzfpqznz +klsgclc549rbksgrbbh56 +3xksqcrhdsthree +55nxbjvps3nbmf +7qzzfourtwo1688 +h5skqsrnnpxdone5fivefourkffrsblv +3fourfive2 +25stdpqvgmzg9qksix5three +fivenxhkvbscrxx1j4 +dtszrbcgpgxbh1 +fivefvrp159three +68mdjsggnbtwokmthtwo286 +xtwone7bkhjqkmmdkxvqtxfkpmckj5 +btwonetjkkdfqphr2gkknfz7one +ninejgnxcchjqsevennvdjvttnqqsix6 +395seveneight +lfrsoneoneeightfour6 +four9prvhcqdnrgjl +qhbkninefive73six8 +sixkqjtrs1hrmnt +5lmctnqtqc49eightnt +sixghthgcnpfeightseventwo3 +vvvjbvnjfeight41nine +9gkxpcrql9three4 +65seven4eightmjnh2gbjjstdgb +8four68seventhree +19924nine1lxnfzgt +fgjtbsfour4nine4vqfznznqxnsevenvzn +fiveone9bzshjmdvdsixxknhmmqskone8 +xqjzgmdmnfivefourthreemmksmdsix6cct +eightklfnlkb9 +rmtsdblmcghszsfgd66seven1bct +twoseven6 +psbfmmmrppdfm5ninetwosixnine +rkcgdnslc9pjtqvgdmbvpkbbksxgr +mxjpns69 +rspjpcv4fourthreesixfourninevlfive +2dgjgdn +66five8qxeight +five93 +six7twovssixsixztrmfdrrvgqtdhmh7 +32sqltqgoneightd +4five8tns1six +277 +pmrzrckf6 +8rglvpcttwo1twofive +fivethree644hrphp +fdpjb6 +dfkpmgxfgfmtklbffk4sevenfive +nhqfpnvpsqpffour6neightfour +threeseven9eight67three8five +txttqnnineonefiveninesixlbscpqp1 +three2sixtwotwo7smkmq5 +8bjzjrnpspnine5 +5three659fourfour +qrdrk7fouroneseven +three7threevhct +mpjpgfbt8five6fqjbghvbpcnine +7zonesevenzmlvfvzn +2hzldqdntffxhfpxlghf6threeninejrxngnjq +dfppvqcvthreessnnm65tqtn +56nine75rdkxdcmj +8twozvjkdltz4sevensixfive6 +vzpzllmbghcccksevenjgjghqjr98 +fgjsgxlh48sixg3three8 +4eightfbppqltgxttoneoneseven3 +six1eightddcthzd +fiveggljcppdeightnine5hsbfrtninenine +2xrdtzfnhpvpgone +982 +two7nine7eightnine4 +one431 +eight9fmbfqxgzlskgjrrksr8six +9zhvdllsszd +4pnkpxrgltkdbztlnz2 +4ninebkh6ninefiveh +five9ninevrzxhfnggfourfoursevensixlncsfdvrz +rqhjjxzeightnineseven7fnmbkrtqgr +8xfmqdone +pnszhd1trqb71gfhpjpq +9htfkgbxlht +sevenoneqgx29three5six +fourdlscbpbpb9four5jbdjzqqdthreerhqdsbb +five31sevennbmrbhtthreebzqxvthree +one4c +three38183threesix +6rtdclcbfbbdbeight1 +2one8xdeight +2sixsixtwo +nine3pcjthmlmtljkrzxcdxkbmgzneightzcmtwohpdpkvqg +9two81qlhsrnfpdksdkd +threejrgxc4seven26njlmtbheightwodjh +lrjzhghhpk342threeninejskdnjjltt6 +46threegj +ninedgpkqblftq2b3four +3951sixssgmjj3 +8jteight4 +three6mdvfkgrxcjmfoureightfour3 +hvbf28 +9fournine713six3 +four1seven +763twoseventwonine4 +ctpfmnsvcthree9sevencbqtjc3 +sevensqdhvxd36 +fourninergfmdxpdbt1ninefour +2kptonesixzpqrsqzhv +h4qcscfxfctjbqnff1sevengxvjjc3 +d8cnjksdf +hzcgnine35fcbxtlg8rjhzbjfkv +jdvoneightdpfvzvp758fourfour +four27jhrgqnrjnkzffour5 +fivetwoszrxz2fzfrbgqntjf +onergnqpl3 +ccfqnc5twothreefoureight +grgsgxsevenkvzfjppnzq2sztcfive +9two94onesix +nine7seven7 +eight36 +plgsevenvfljnqvtfq5two +threethxdbnz49two2vdxbpqtpb +cf9fkrbrvjhssptthree +one5lrcn3klrcphllmz9 +onesix6seven8tzgfdbm +964khvfxtrljs88 +trszhb48fmseven +tdfxvnhrzv8threesevenkgp +ninegnmjxzbtcb32four9mlpkbfqdxdkoneightg +sixnineeightnhlqfslb2v +one83fc7zs +pxfkljdbdqqqvnrfivefoursg5nine +2onevh +1fgjrsdlgnbmsbzsevenfive +3nine87pmsqqntwojtnrksdtwo +two59kltcxhzszhdtwo +6451 +sevenzscjhgpfgsseven7threeseven4threedlbtxtcvl +eighteight8sfsvhbkf9jgfrddx +qlvdplcqtrcj2eight4 +sixbcpxtjt4onetwothree69 +91fourrbblcl +twozvqbsx4 +twogfh73 +onesixljjrlonethree3rxtwofive +onefour62 +b7vfplpqnine5 +67dgbmmjsevenfivedktq +7foureighttwo4 +sevenctctvfg51tsbzqgcvpvslqb +mjkeightwo7eightsb6one5xzsix8 +151dht66 +93tkbs +29two +foursixtwo5gprqslprxkrbfbmsl1six5 +one3six3 +three66rbh82bgtfzsfrkhrv +2sixfivethreefiveseven +fcjttg4onesixtwofive +15seven54 +5kjdkr9htl +gclrsklbvkfbdcb9seventvdtdmmmksh52xkxtpmfpvk +spone7eight5xzjrlxrnzjtqgpdcgrsjn +vs3fourdkdlhx7rb +9ldxtdk3 +4dppnthreetwodvkhjjrqh1zbqxntvtxgchv1 +1sevenmsdrjgqfivevphqmxzghktwo6fdvkvqhj +tbptrcvxhs9qcdxcpvp +8five2ssrrhgtxfone +3clvbm2g961 +four2onegkhbdfive5vxvxvtxglg6hxrtlhzjh +kfhcmflznrg9qnkkxqcsm2vqqtrdg8tjkshzpnddvd +eighttwojfktjcrqthreepssfour39 +359nine2fivevvscbvggjhbnnzqtxfsbpb +vvshjlcfqt6qjvfjsix2tgsjbdxgppq1jmr +ninehhmeightcvqskvjptz2kdnhpptvkz54 +39threefourndztxcl +sevenfive7 +csmmpzfsix41 +9cgqxtpdxt2 +3mpzvlxrzvhtj +fourkqhzsjjjvx3six1 +52one +nineltplrl8tfzqmnqeight +sixfourdqrfvrvbvfzzgb6 +mqnxglzjk6qqhzksklvsmthreesixmvhmhbdkqpnxcsgvcsl +65 +zqconeone85three +rxnhdflsqdqglxdmfxlxponeseven4one +88nkgcglftwodfxfhzxbqdpfrqmtwonenf +jzoneight9htkkpszpcqvkmlvl +388xnq +9xhlrqnkjpthreedfknpmqqtwo +4onemfzjfvmhhfive3two5pjdcf +djqjglztxs5nineeight8jdzone +four35ninefourfivethreecnhntp8 +gxqxl6fourlfdtndgdql +fivenine6 +1pqctbpbbgrmgqfqbzbjjt6 +xzvjjfnfr28jblqseight +ctwone23 +6sevenqjtwo +8nineplhlmsgjvs1 +lmjgmltfivenine9 +8gxnnnjonesixtwotwo1 +2seven678cdxhkflhj3eightthree +djzninefour3one +vbqhjjhpzg86rkzdjzfj +eight1twotthreeqqlr +bkxseventhreezcjvdkxzksxrznp6four8 +five77xcvphzcnlfbgbxnqbhfrldg +71qxqdncxdjsix +eight6one6jnpspgmhngzrfneightzdnrdhj +xb9skhpnfjsmq +jxgtk618fiveone1zr +8dkdnbfr +3llplnp4dzdxfhbvbn7two +eighttcgrbhrspktwo6eightddxhqqbprrf +eight2mpmzsevenrcbmsqg2cxjvmblnqbqdjsl +seventwo54 +koneightsix22three +zdsnjr5vxrhkthkr8qmddrzclmrkprmvbll +fbkmfxncztwohjbfgkhgvcdkrpnc5 +ksprkgxkjnineseven3fivebjpqhrmbdtwo +fourpss5 +1three9fbnnrjcgllkvcs6 +oneone9kjchnfsv9ffcdspfive54 +26ninejctplmsgb +9ftfjrmvjblzqqmrdczpone3bphtmmkm +7lpssdtbc67mhnthree9cndbsthree +fourfour49four +nineeight8bzeight +128zpqftnxnqz2threettrhscsll +1xdtxcg4tkxtsnl +hmxbjczvgmcrd9mqsfivefourninethree +5hseveneighttwomgxmlmskr8 +zdtbtszzkbk5 +eight5nine6xthreefour +9rbfcnjztthree4v9vn +voneightqdtnrtc4 +86cnzxs2three5 +eight9seventhree +tjmrjgcfldqtbrvnzzxshxkrs3onefour +2rxplslzcglskjxgthk76cczdbxrp +sevenpdvsbhkknxqkqxfcz6bhmkxmhdbvhcvvhpmv49 +three1twotwopr2lctfjb +zrbrqmh87dmxzmtfvthreelsleight +34dcnd8eightwombx +two9xnqtcfgq8tsqzvd3three +nine5fq3 +eightsixfivemtcgzlbkheight4 +qlspgfndmx5twobtjgzgvzmcone +5zlldrzrffgggtwo648 +seventbqtkpfivel6 +hjqbmfnnqzmf4 +fiveqhdfsnjvqtwo6two +jftwone7 +4twolqvglgxcc +twoqjmgjtrrjjt1eightcpj +eight9sevenmlkpsbzmtnhdrkbmj +trrpdninesix8oneqxtrzf +5sixtsxqdbnczhbvmfkvkc +tvbf2 +sixtwonjssgpljqrxhlstfx4xbhqzlqktsixfour +kfxccb45tzsftztxjhgnxqsxknl29 +tworjdcgsgvsix6 +eightjbqfive26gfspjh3nine +2sqhleight7cfkhzrsevensevenfive +kzpzjcrl98sfive +sevenrsgtnine4pbgvrbcpf8 +25q3qkcxlvhrxdonednbtcrrvjlnngq +twothree4lffpxvfcgqrkvdgzdsdjxjsh +seventhree34seventwofive9ckm +three25skfkvqdmbmsixxgqx +three1eightthreesix4 +threeftjlv9 +6spbhfckxcdrxlcg6hxcfive6five +8drbfjrgzvs834slzhsbgrjm2seventwo +sixsevenfmrvpqbgx4ncrmvfkjx62 +lqfsslkmstwo7rgnqeightthreetnlnonehszkrghlnt +5onethreebxxfstvd +djchrbjcrddcqfourmnninesevenrdlpfxthr2one +three3threeoneninepcrjr1 +twothreernxmhmtbn2fourtccrqhqs +lzzdpfourtwo1six +two3one3 +zzcnprtjdr22286 +seven5qjlfrhj7seven8 +seven99 +mtztq6one37oneeight +mrfcssmzxpvcz2sevenfourfivelpzqkvvdxmmpmxqshskfnh +nine8rtx71 +1llzpvcdgmvoneonepksninefourthree +gbbvkcfive18two8twonineseven +2fivenztsix2nine +gjqnnr422seven4ppbsqdbpcfour +fourtwo5one7qfgpmmphdtl +pglzjrr4fivebclpf +slrrcqxxhtwoeightseven6 +dnknxxkbjplrkjone2threesix9 +htctqnkcmfqdxrzd9eight9seveneight +8sevenfiveninermlrrzpcdxkjkczhgpx6eightone +eighthnfxhrtssbmfxv6v +6fp539 +sixzmsfqjzpvxjkhfqcrbss7xgg15 +nine5ninevddknzczpxgzjx +jbcsf3 +jjbstlskzxc5nine +jlrvgcbch7tnpfjnczdsrgddrseven156fvdmfhtl +one89 +three52sevenlxxskf7gxh3gb +eighttwo59mqzdlqjdkkxgjhnktwoone +519six +1onemneightsixdlqx7 +7fgszpqcj +sbfjtrfvnv6four +qtwonedvkninercj8 +ntrnzldltrvtcsh8eight77sprgsvfdljthreecndckrzmjl +gtspn2 +54six6mkjznlb +sevenonethree3sbpjqgltv +four8two +xdzrskv3974mgvjlhzbkddhcxzzxv +6three1mtlxshtxfpnine +14threeseven6 +37threeonefpfgmz9 +three3sevensixeightfive1nkjtndgrd +2dsmr7qhmnrgbsrvjmsbctwovb +gkdsnnqzlzdvcgthree3fivedzvpcfive6one +3vkftsclsxtxmsjeight +sglkcnzgz4mnhgblxqgdv69 +tpcjb4one73s4 +sevenrvhhxjcfqgs32six1pjvltwo +8zmktmxkbc5mpgrtnxmnp35fttpmdbhfm +1sevengeight +hghs1sixvvjpmlcponethree8kckgkf +gkbpflqvh1cbddlvdkzhfmzcfourkmckngsevenxkjknplzv +5sevenfk5qgfshtqseven155 +dfjdtxjxb8fivefivebjtbggkdlpxlmnrcdt4jrrpnbtvlthrhmczn +2fivefivejxhh6 +41threehtwo4nhzdn2 +2fzngnxvvpjrqxk6 +53sdthreeninexrfone +6qmrthlzgqeightrzrdglxvscgr +snkmhszcbmthree5threejsvkpkknpeighthbv +cmgb9seveneight +5djnine3bcffxgjbrhxbfhgthxb +1flqjgsf2ms +fivefive7onefour +threeeightksmhj94jvfvqrsgqrsevenj +jttgbfmh9468ddshrxnjthsix3 +25four +9sixseventhreefiveninefive +eight5twoqrfgpkbdfc3qxfmchrjx8kpp +nineftnvllx1rjzkkt +gmeightwothree1fgfivejldgmt +nine966fivethreeninecpmgsxsxz +77bfhphxczdg2eight +89hcgjjtchsix +1onexps1 +3fourkgm +hjgnbninevxdtpnct7bmstnczzteight23 +twoone1qt8 +43744 +fourtfgn2 +sixppztkbvllkltbs51xknnfive +tqxoneight5 +twong3zdrbpqnb +fivebcrxk198three +435sfddjvfg56vkddkzhhj3 +qcnhlbzmbld2fivebsix +zfsrtwothree8 +nineeightfivetwomcjm2seven1 +3gbnxlzxhvzzgfjjhf44fgbccpthhnkpht +3ccmrkbfour68ninetwonebz +sevenrccgdjrqj9one +fourzgdfbsnlb66txclxgp7 +jmzlbtgbtl8three +6nine32pr +sixffcsmhlfiveklbmgj8nine +psmjrt65tppjqeightzqvglglnine1seven +fourninehhzh8seventwoone +48two2vzbrl +mdlzptrcsix3three9 +sevenlgr3t +7sevenpphjhvdhkheightwojv +seven3756 +four85 +4twoonettmxjncsqmgsrxsf +fivesix6twofvzqxpphzmlkj +eight1twojrzspbfbzkftwo +5eightthree5 +31ninecjnsevenjvbsvpphpxxkcnine9 +nine5vnine486vrhbkgl +sevennineeight97qpdlfbskz7sfbtm +onernqbxt8twoone +gftjrbmkmngtshchbgfc1nvvt5 +four5dgvsixzhlxnnmjhkhkljcfdpeight3 +ttmfdxhd3ninekzbtsixnfmvfour +8pfkhxhmh8xkghgdk +nhs4threemxjpbgsix1s +ghtwoz1 +sixdthree7vlfbpzcm1ndbbczvc +ninetwo183 +twofxsdt36fcthreethreeseven +7grvvzqhcbeightwopx +twoninevknhnkgdmhmlbxkeighttwonine4 +4fourdmclrghj2 +sevenmtgvr8four76fivekdqbsmmtq +klgpeight5sbknbhvsixfive6 +2vddxlzfpsrqsbsixlgrfnhone +jxfhlzcp6qctpqhb1 +eightd1162jsfcsplrctwogcpzlhqf +one4four7xx5 +threebqmzstphclb5fiveninethree +bkxfxxms6eightwoxz +nineeight4four +sdsgszdznng4sctkfiveszkdknqjf8 +vtzmnllvvhrcfdlxcxxlqvzst1 +htzxcxpvqj91sevenxrggdtjzbrgcv +ldcnbzstq4ktzdxgmcl +twohshbblseven4grzpdtfmjn13cmg +cktjnhdnine1three9mjqvnjtkseven +891ninesevenxbdjs +kxjpngdtwomxttdqcdkhdj686sixl +hsninefourcxfj3five3eight2 +6eightgkkr1one +658one +zqgrxfourfour8 +twobbnfkdtb9five21zcfiveoneightjgt +79jsm55twonine5 +eightftk2two +eightbjbvqscs5pvmb14lgvgfv +four4four +qmzheight5hgfourkgtqfhjfournine3 +twofzdqtvssx2 +1fivefivesixsevenone47 +xhrjffnine8 +oneseveneight72fqgzscqt5 +nine7fours58 +three2fourseventhree +35ninesix +qgjsrxgqb5 +fiveqghjjvjthree4eightqfgrhblkjtwo +9mvcm +96fourqzdsix +vbzqmmzbvrbxltvlfmcpfvnddmgsbb6four7onegn +three3qnlxmkhpctwosevenfourvmqmqlgfrsn +2seven5one2six15vgnqzpggn +sixljtvqzlh1 +45onesix +foursix44eightseventhree +djsix84rnx8z34 +1mkgthree8two9956 +psgnl6six5seventwoone +546cfgr2three +thtpczmkskptzn9pqzncp +31threeninesn7xhqvrsv +threehmjpvctfhnmhs57ninepzfvq +teightwothreesixdzqhvljk84nineninesevenb +gvptkx9rlsnmtwoonesqfxmzkv +7twojszdrxcxfour +3eight617npsbbrpkjtzsmeight +3sixqntvpttddsixninemtpb4 +1onefiveseven2fourseventwo6 +67foursevensixsix2 +one7qeightonehckxhxdfjjzsrdnj +38onehzjxg +4splxs1zfvfksevenkrzfive +fourfournkcj9 +1ljmbhcpttjnine +2xnvfpdgccxfivellztmtpnc +ljvlxplhxfsjqv6sevennine44nine +qdonefourlnrzrgthbt1 +twothreehvvhsxzqz1chvbcsxtll +82vmfjbvssmlgk2dbsljgvd3 +xzfbfmbbxfeightgfz3lvzpzbpmv1four +oneeightfd5ninetwo +ghddk7six7xqmglkvnqonesix +six1eight +7five5ptkbvvvfive +3hftgthreehcfrsnl1fivetwo +7six12onebhpz +mkqjv8bzdnt9sevenfourtwo +five3mzgqnm +sixtwocbjxlgvp1twoseven +dkfmbzmvxseven971 +bninetwojnsnkc7 +ninekzcpfive4five3phz3 +eight8143 +eightrzdmxzb8eight6 +5pdjm22ninej37two +fourtwo8fivetwosixthreetwo +ncttc71fourfivejpjzcgzpj4 +5882three8glcvgnfhscbtmnqmnh +ngxkxtwo9pltbbmxrknvjheighttwo53 +twoninenpqqqgsbsq3fjdk +eightsevensixhtsjvxjc8jxftgnptgqsixvcncglzlgq +sjxtcnt8gpeight7cbgffmgqksix +fdsn9threenineninetthree37 +19rrfdqtpmonetqjdcjtxlhkptccjn6mtztqhvvtqftbv +vrhprdjsfour28p4 +eightfiveeightninevdvnmbv58vrs +qdzhzrhlfl7hhxqzxqdxeight +svnbzgbhxjcx26xclfgs +5lcggbhzrmnknine83txffvcdonecrqvvjf +six5fpncsbbqbbcczcmbgrqmndxmrxloneone +1one6 +88gctsmp7eightrvshklprtm +xf874onehhcknx +sevenvvncrhvxjxnzsftkfhsktwo3eightfour +8ngprdqfour +98fmrxpxzzbrjpxzqdxmv +2zbxzsthreefivefhdbhvjjxv6btwonef +jzkjcvpn924qjcbr97h3twoneff +foursix3 +9pmtdjvrxjrponetjlxbdzbvrcjtc77 +52twoeight2fourh8 +kpzfztlzlkdprbmrhsjcxfzsbch31 +4fivebtfjmfive6seven +ccttxjmheight6twothreelnjmfoureightnvcvpmpc +6twoz1dzv95 +threelsmgdnxcsevenqr4xrtthzgkqxsrdssmjqv +fourgpvjxdg4qpvfivefive8nine +9mncmnhrclsq +9zjfmctz +pndgptggnsthree8xlcctvpsix6three +98npgrlkqmcninethree +fivexp6fourdpckhqpcxczrfbr +six2xdgsqdpsbmgftzvqhnjg +7ninepqheight2eight7g +2zrsevennlpcljnp +twoonethreevvpfp1jrhsevenfour +threebzmggv7bjm6cczkbsronetwo4 +three1foursgvfdrrqmk4two6 +onengzkkjsxsjlxxxthpd7xfcvkthreefour +sixnine5sixeighthlvmf +63gkmbsdc3fourmgrjhrlbqgcfxf +2bmldthree7skhhpxfonenineone +b6seven7 +seven39 +twoffxbsgpcxctmmvb4kdhn89 +seven1fmgtseven +ninegxbdmztzzbqq6lgcvsbhzplqt +7twoonev +24nine +tvjmbzlsjtrtdhdlvnffmcfoursix6sevenonebvq +5jpntjsthree1threetkbsh7 +sixone423fourqnczdxcpmsvjpzhl +33zdfourseven3 +77lltwo5nineseven7djjmdqkqfd +4xfnpfbtdl7 +two5ninejbrfrsbrsvzfivenineseventwo +89znjldjptdnfkeightkpcxdxcc3bkmfhtzkkh +qlkxd1rv44qlhhpjrninetwo +6l2rfscvcgdm7 +rhtsrbrmlnfvseven1eight23dd +7xcglznxrjzsmhqnkqjhbjqxnjpjx15six +fourfiveq1vcsnnsxkmrcjscn4sevendbbtjh +6qcvjplvnine91rfjk51 +jmdsgfxd5 +tlzpvtsvkdsixtwo95 +8threeeighthvhlqss +threetpxxlmfrhpf15 +4twoeightsix +rg8nvrtzxjvfddkeightwofzs +tggqninemk1 +mlchhftqkxtbhfpjsixnine817 +231rpkxcvcz5fcztnqskqtwo +five9hhrtmp9twosixthreeeightv +9threeschsm17 +hhreightfour171dtbmhzhhjb9fgbg +bhgp6 +fourztzlhdr2hbdlv8fivenine +fourseven8seven +eighttwo8eight +two12 +threenine76ndvklb +twoseven9jxfcthreecnrpvglksc +84fivehmf +jpgbtnrsb15eightgdtqmk +34two8eightbxqvc5nine +four4hsgjmtbfrvfivenine +threecfcx8ninefive3xone +cvhtlnlnhh71 +four9sevenonenine9ninejlgmtvxmxseven +vttchshfgfpdbmpmp338 +nfcdnhq6nineeight79 +rgltnqzrzfqdjsfrhzmfivetwogklxqdhzbjtwo5three +five3n69fiveninesixtwo +nfhheight12clcqcnpdbz6nineseven7 +eightgxtmstbthreedvrqllvp1ljqstbjdhcmbmbeight +two26four7three +6rtninethreefive +vhnqgdzzbxr9two7mdjzsx3lf +twothreepzxljpd6sixcmsxkcqkfive +6threesevensevenjzkcqthfivegmjvstrsix +five7fivetwofour +onesixseven767 +36onehxdpmcqxsfbfive +2hdvqrlhs5six +pjfcjrnjnk9four99nineskshccmmnvxzvhvqmcprkdqvhhk +4gronexqnzdfthreejgqt +kvrsixtwofive2 +eightfourone4hone +cgbjtdbvptworbcz3 +jpgmhfour1 +ngbgjhlstwokxc8onejlhczxvnjbrkqzdl +chbmqrz3fourthree +rgvmkpeightqdssbcgf9fivefive +5vgrscgshtbfgbljt5 +pxgq5kffxbdjgq5cjnpzfdt738six +meightsvfb47xcdfkhf5 +clzqdc4five1onexfxlxnltfourfour1 +fivesix3threeseven +tworgklxh1threefourcsrsbj5 +3fivepdppjlmmb6fkgrcbldbxsdjpbvbqgpj1nine +9clvlvsckdmjsbxzrmrhfour +fourlptwofqspctl913 +28foursevenrfjfive5qrfsl +gfhmkfln2jcqttonethreetbmcdhhvbnmqdgsbrrmpk8 +eight35qvkxtwo3fivevfive +26fivegpcqqsjr7five +three1seven4 +9fiveonevmxhtndtfzmnxvtjkmr51six +64vgrgtwofour +four9one +nxjtdt2three1three96lfzglzcfour +355six +9lvqslrvdrd8six +9threetwo35six +two57 +phpkcmfxvt7gphd1qglpmckhnj +sixthree1ffrdbsix4two +spbscvjfl8vvkpjkshkx3 +5nnjdbjj3 +bmmqrrkdcfbctmsk124eight9one +4rxdpvqlhn +seven13glpzfknqtxdqjq3qblzcjvx9 +8bnkbzszkxkrrfdmcstvfvp +nndndjrs1qd1421 +twovn9four8five +eightrc1 +ltjvtcqfzdfourseven8kvcx43 +vn6ninelr8 +2seven1 +7rldpqrfoureightthreesfhz11six +56fourkmvl6threegzfqnlrlz +8mkpcsnzmknmzpjppf8two7 +bzgvzcpkqxmbxcqsix4qjzt28eightwoj +threesixxqkshhnine7njtvvxfmjl8 +5seven6vqcd62sixone +three552 +hsslkhbd88zjhqvgtzpfour1 +oneone96fvjbmcnzrr +pspndcdtctwo6 +v3one9 +fivefournmrfrzghdh7twoxmpgkps772 +vdkqxqnsthreefive25 +kgjsevenczqrqf14pjchtfbnnninexhgn8 +lqkhzjzm3six1one3 +1three3l61seven +1flsfhznl +r8hnbpbtrzkstdg +hhrmnkktv7seven29fourpvjceight +2mbft +954five9fivegbmlz5 +dshbfdqdjjgtxffjmllgvxjfrstgldgdxjsfxbone9tgseven +fourseveneighttdgghnfive7pchxddgggcq +8zx5seven7pffldzjhdb8 +bpqslhkt33sixnlxckbbr2 +xqmxvjcplh4seven +jd9zxmz2two1kvsghkvkpz +9blk3 +6rjvmrjk46 +onetwo6ninehdrlnxgbc +6drvnkssqzv5jfnineseveneight +sevenmvxlzmtwox49one1 +8fxnnjr18fivefcf +five98sixkblsvns7mgttvhhz +85qkkg463lxdhzdtllqtv3 +fivethree5eightfivessrnhsmdrnvssxfgxmsix +xgmqjone7j +pkclcg54 +dvllcqqghh891pdlqnbtb6183 +2qbnqkgncqrvlfntwo +seven7qdfzfpfivepnbhrqx48 +682sixqtwotbgnsspzqcntlrhpzcq +2sffrxkgmsixfivetwokfvnlhz +sv9klzvnzsgjmoneseven +bzbppxbdpxs9 +68ninetwo99four5grdrrkpr +mtfcscprzkeightfzdbhdndqh1njdfourtdtflbfjrth +8nvdtbrfrvfivesixtwodzxfhgpzlk6cgkbr +3slmzvnine5fm +eightone16nine +kdzrjbh2txzz5hbone96one +17pgtwofl41 +eightoneqjvzv3 +fivetwocrhmvxqkvbeightfive1qzcxvds +2htzsvdhvqvdjv \ No newline at end of file diff --git a/day1/sample.txt b/day1/sample.txt new file mode 100644 index 0000000..1ba8437 --- /dev/null +++ b/day1/sample.txt @@ -0,0 +1,4 @@ +1abc2 +pqr3stu8vwx +a1b2c3d4e5f +treb7uchet \ No newline at end of file diff --git a/day1/sample2.txt b/day1/sample2.txt new file mode 100644 index 0000000..4316a6b --- /dev/null +++ b/day1/sample2.txt @@ -0,0 +1,7 @@ +two1nine +eightwothree +abcone2threexyz +xtwone3four +4nineeightseven2 +zoneight234 +7pqrstsixteen \ No newline at end of file diff --git a/day1input.txt b/day1input.txt deleted file mode 100644 index ea74611..0000000 --- a/day1input.txt +++ /dev/null @@ -1,200 +0,0 @@ -1918 -1869 -1821 -1852 -1981 -1987 -1989 -1597 -1634 -1537 -1991 -1603 -1543 -1949 -1879 -1800 -1761 -2010 -1810 -1458 -1755 -1938 -1500 -2005 -818 -1493 -1618 -1923 -1283 -1952 -1373 -1605 -1230 -1321 -1873 -1853 -1886 -1372 -1913 -1871 -159 -733 -1400 -1880 -1462 -2007 -1801 -1982 -1728 -1640 -1442 -1525 -1953 -1791 -1906 -1946 -1641 -2009 -1627 -1935 -1936 -1908 -1826 -1291 -1978 -1884 -1799 -1464 -1538 -1365 -1678 -1872 -1964 -1863 -1388 -1912 -1928 -1471 -1632 -1336 -1396 -1948 -1974 -1331 -1290 -1992 -1096 -1889 -1874 -1341 -757 -1351 -1876 -1674 -2002 -1504 -1865 -1469 -1792 -1920 -1925 -1898 -1899 -1435 -405 -1488 -1319 -1322 -1749 -1867 -1957 -1944 -1727 -1293 -1739 -1285 -1917 -1897 -1844 -1966 -1921 -1905 -1830 -1484 -1364 -1782 -1415 -1412 -1413 -833 -1857 -1370 -1890 -1393 -1262 -1311 -2008 -1545 -1896 -1362 -1862 -1617 -1864 -608 -1868 -1689 -1784 -1806 -1976 -1870 -1973 -1993 -1986 -1998 -1414 -1858 -1990 -1841 -1895 -1779 -1850 -2001 -1590 -1902 -1487 -943 -1808 -782 -1546 -2004 -1656 -154 -1661 -1688 -1731 -1466 -1927 -1438 -1387 -1576 -1793 -1797 -1979 -1903 -1638 -1940 -1911 -1301 -1669 -1409 -1578 -1887 -1860 -1619 -1939 -1625 -1941 -1374 -1766 -1407 \ No newline at end of file diff --git a/day2.js b/day2.js deleted file mode 100644 index e135497..0000000 --- a/day2.js +++ /dev/null @@ -1,68 +0,0 @@ -const fs = require('fs'); - -function split(item) { - let parts = item.split(" "); - if (parts.length < 2) return false; - parts[0] = parts[0].split('-'); - - parts[0][0] = parseInt(parts[0][0]); - parts[0][1] = parseInt(parts[0][1]); - return parts; -} - -function isValidPart1(item) { - const parts = split(item); - if (!parts) return; - - const char = parts[1].substr(0,1); - const regex = new RegExp(char, 'g'); - const matches = parts[2].match(regex); - - if (matches && matches.length >= parts[0][0] && matches.length <= parts[0][1]) { - return true; - } - return false; - -} - - -function isValidPart2(item) { - const parts = split(item); - if (!parts) return; - - const char = parts[1].substr(0,1); - const pw = parts[2]; - - const char1 = pw.substr(parts[0][0] - 1, 1); - const char2 = pw.substr(parts[0][1] - 1, 1); - - if (char1 === char2) return false; - if (char1 === char || char2 === char) return true; - - return false; - -} - -function parseItems(input) { - let validItems1 = 0; - let validItems2 = 0; - - input.forEach(item => { - if (isValidPart1(item)) { - validItems1++; - } - if (isValidPart2(item)){ - validItems2++; - } - }); - - console.log('part 1: found valid items: ', validItems1); - console.log('part 2: found valid items: ', validItems2); -} - - -fs.readFile('./day2input.txt', 'utf-8', (e, data) =>{ - const items = data.split("\n"); - - const pws = parseItems(items); -}) \ No newline at end of file diff --git a/day2/index.js b/day2/index.js new file mode 100644 index 0000000..56da886 --- /dev/null +++ b/day2/index.js @@ -0,0 +1,64 @@ +export const part1 = ({ input }) => { + let result = 0; + const constraints = { red: 12, green: 13, blue: 14 }; + + input.forEach((row) => { + let success = true; + const { hands, gameNumber } = splitInput({ row }); + + hands.forEach((hand) => { + ["red", "green", "blue"].forEach((color) => { + if (hand.hasOwnProperty(color) && hand[color] > constraints[color]) { + success = false; + } + }); + }); + + if (success) { + result += gameNumber; + } + }); + + return result; +}; + +export const part2 = ({ input }) => { + let result = 0; + input.forEach((row) => { + const { hands } = splitInput({ row }); + let blue = 0; + let green = 0; + let red = 0; + + hands.forEach((hand) => { + if (hand.hasOwnProperty("blue") && hand.blue > blue) { + blue = hand.blue; + } + if (hand.hasOwnProperty("green") && hand.green > green) { + green = hand.green; + } + if (hand.hasOwnProperty("red") && hand.red > red) { + red = hand.red; + } + }); + + const power = green * red * blue; + result += power; + }); + return result; +}; + +const splitInput = ({ row }) => { + const game = row.split(": ")[0]; + const gameNumber = parseInt(game.split(" ")[1]); + let hands = row.substring(game.length + 2).split("; "); + hands = hands.map((hand) => { + let splitHands = hand.split(", "); + return splitHands.reduce((acc, nums) => { + const [count, color] = nums.split(" "); + acc[color] = Number(count); + return acc; + }, {}); + }); + return { gameNumber, hands }; +}; diff --git a/day2/input.txt b/day2/input.txt new file mode 100644 index 0000000..0698456 --- /dev/null +++ b/day2/input.txt @@ -0,0 +1,100 @@ +Game 1: 4 red, 5 blue, 4 green; 7 red, 8 blue, 2 green; 9 blue, 6 red; 1 green, 3 red, 7 blue; 3 green, 7 red +Game 2: 20 blue, 12 green, 2 red; 1 red, 2 green, 20 blue; 1 red, 14 green, 17 blue; 7 green, 17 blue +Game 3: 3 green, 4 red; 10 red, 2 blue, 5 green; 9 red, 3 blue, 5 green +Game 4: 10 green, 1 blue, 3 red; 1 red, 12 green, 1 blue; 1 blue, 2 green; 4 green, 3 red +Game 5: 3 green, 8 red, 1 blue; 4 blue, 7 red, 3 green; 2 green, 2 blue, 13 red +Game 6: 1 green, 4 red, 2 blue; 9 blue, 1 red; 2 green, 4 blue; 4 red, 11 blue; 9 blue, 3 red +Game 7: 13 red, 18 green, 4 blue; 15 red, 5 blue, 14 green; 15 red, 11 green, 7 blue; 3 green, 3 red, 7 blue; 3 red, 5 blue, 9 green +Game 8: 1 red, 4 green, 4 blue; 15 red, 8 green; 6 green, 1 blue, 15 red; 6 blue, 15 green, 6 red; 2 red, 1 blue, 9 green +Game 9: 18 red, 8 green; 2 green, 18 red, 9 blue; 14 red, 2 blue, 10 green; 4 red, 2 green, 4 blue; 4 blue, 12 red, 9 green +Game 10: 4 green, 1 blue; 3 blue, 2 green, 12 red; 15 blue, 12 red, 2 green; 10 red, 8 green, 11 blue; 8 green, 10 blue, 10 red +Game 11: 5 blue, 7 red; 2 green, 1 blue, 12 red; 7 green, 8 red, 4 blue; 3 blue, 8 red; 6 green, 9 red, 3 blue; 11 green, 12 red +Game 12: 1 blue, 3 green; 3 red, 6 green; 2 green; 1 red, 6 green; 1 green, 3 red; 1 blue, 2 green, 2 red +Game 13: 3 blue, 12 red, 12 green; 5 green, 3 blue, 2 red; 3 green, 7 blue, 13 red; 4 green, 7 red; 3 green, 3 blue, 5 red +Game 14: 14 blue, 1 red, 6 green; 3 red, 9 blue; 5 green, 11 blue, 3 red +Game 15: 9 blue, 2 red, 5 green; 8 blue, 3 red, 6 green; 17 red, 2 green, 7 blue; 11 red, 2 green, 9 blue; 1 red, 4 green +Game 16: 2 green, 2 red; 3 red, 2 blue, 2 green; 5 red, 2 blue, 2 green; 2 red; 2 green, 7 blue, 4 red +Game 17: 8 blue, 6 green, 11 red; 5 red, 2 green, 2 blue; 4 green, 15 red, 10 blue; 6 blue, 2 red, 6 green +Game 18: 1 green, 11 blue, 1 red; 1 green, 1 blue, 4 red; 10 blue, 2 green; 3 green, 12 red; 4 green, 8 red, 5 blue; 13 blue, 4 red, 3 green +Game 19: 5 green, 3 blue, 5 red; 5 green, 15 blue, 10 red; 15 blue, 12 red, 1 green; 7 red, 5 green, 10 blue +Game 20: 4 red, 9 green, 9 blue; 5 red, 10 green, 10 blue; 3 blue, 11 green +Game 21: 13 blue, 9 green, 13 red; 1 blue, 11 green, 14 red; 14 blue, 8 red, 9 green +Game 22: 8 red, 12 blue, 6 green; 12 blue, 10 green, 4 red; 14 green, 16 blue, 3 red; 2 blue, 8 red, 5 green; 12 blue, 9 green, 9 red +Game 23: 9 red; 3 blue, 11 red; 2 red, 7 blue; 5 red, 4 blue, 1 green; 4 red; 7 blue, 12 red +Game 24: 5 green, 7 blue, 3 red; 5 green, 3 red, 13 blue; 11 red, 2 green, 4 blue; 11 blue, 1 green, 13 red; 3 green, 9 red, 5 blue; 1 green, 9 red, 17 blue +Game 25: 5 blue, 12 green, 4 red; 2 blue, 2 red, 9 green; 8 blue, 16 green, 4 red +Game 26: 7 blue, 2 green; 5 blue, 1 green; 1 red, 2 green; 8 blue, 1 green +Game 27: 1 blue, 4 red, 17 green; 3 red, 2 blue; 18 green, 1 blue; 3 red, 7 green; 1 green, 3 red, 3 blue +Game 28: 6 green, 1 blue, 7 red; 10 red, 9 green; 10 red, 9 green, 1 blue; 3 blue, 19 red; 12 red, 3 blue, 14 green +Game 29: 4 red, 7 green, 11 blue; 2 red, 3 green, 1 blue; 1 red, 5 blue, 18 green; 11 green, 4 red, 6 blue; 6 blue, 3 red, 11 green; 5 blue, 17 green, 2 red +Game 30: 1 red, 15 green, 1 blue; 2 blue, 1 red, 12 green; 6 red, 8 green, 1 blue; 2 blue, 4 red, 11 green; 2 blue, 5 green, 5 red +Game 31: 9 blue, 6 red, 7 green; 4 green, 2 red; 11 blue +Game 32: 15 green, 1 blue, 11 red; 1 blue, 7 red, 13 green; 2 blue, 9 green, 3 red; 2 blue, 13 red, 18 green +Game 33: 2 red, 2 green, 4 blue; 2 green, 7 blue, 4 red; 3 blue, 2 green +Game 34: 1 green, 3 red; 13 green; 2 red, 14 green; 2 blue, 14 green; 6 green, 3 red, 1 blue +Game 35: 2 blue; 8 blue, 3 green, 3 red; 15 blue, 2 red; 12 blue, 1 green; 3 blue, 2 green; 2 red, 8 blue +Game 36: 4 green, 1 red, 1 blue; 16 green, 3 red; 18 green, 4 red; 4 green +Game 37: 6 red, 1 blue, 3 green; 2 blue, 3 red, 2 green; 2 red, 1 blue, 9 green; 2 red, 8 green; 2 blue, 2 red; 1 red, 1 green, 1 blue +Game 38: 9 red, 1 green; 14 red, 1 green; 6 green, 3 red; 1 blue, 3 red, 5 green; 5 green, 12 red +Game 39: 13 blue, 2 red, 3 green; 5 green, 8 blue, 8 red; 11 blue, 7 green +Game 40: 1 green, 7 blue, 6 red; 4 green, 1 red, 5 blue; 7 blue, 2 red +Game 41: 12 red, 5 green, 6 blue; 12 blue, 7 red, 4 green; 7 green, 9 blue, 14 red; 1 green, 6 blue, 4 red; 1 blue, 6 red, 6 green +Game 42: 9 red, 2 blue, 11 green; 5 blue, 6 red, 7 green; 5 blue, 2 red, 3 green; 7 green, 7 blue, 1 red; 11 green, 12 blue, 4 red; 2 blue, 6 red, 10 green +Game 43: 8 green, 7 red, 7 blue; 7 red, 11 green, 2 blue; 17 red, 12 blue; 10 blue, 5 green, 3 red; 2 green, 4 red; 16 green, 10 red, 2 blue +Game 44: 6 blue, 16 green; 7 green, 4 blue, 6 red; 8 red, 5 blue, 7 green; 6 green, 6 red, 6 blue; 10 green, 1 red, 9 blue +Game 45: 10 blue, 4 green, 10 red; 5 green, 9 blue, 3 red; 8 blue, 9 green, 10 red; 7 green, 4 red, 3 blue; 2 blue, 5 green, 9 red +Game 46: 11 green, 1 blue, 3 red; 3 green, 4 blue, 5 red; 5 blue, 10 green, 3 red; 17 red, 4 blue, 5 green; 8 red, 1 blue, 6 green; 9 red, 9 green, 1 blue +Game 47: 2 blue, 16 green, 11 red; 1 blue, 7 green, 4 red; 1 green, 3 blue, 9 red; 2 blue, 8 green, 1 red; 14 red, 3 blue, 5 green +Game 48: 6 blue, 7 red; 2 green, 1 red, 1 blue; 2 green, 3 red, 2 blue; 5 blue, 8 red; 4 red, 5 green, 1 blue +Game 49: 7 green, 3 blue, 11 red; 5 green, 10 red, 8 blue; 6 green, 18 red; 7 green, 9 blue, 14 red; 5 green, 6 blue, 3 red +Game 50: 3 green, 1 red, 6 blue; 1 blue, 4 green, 13 red; 12 blue, 10 green, 3 red; 18 blue, 4 green, 14 red; 4 green, 6 blue, 7 red +Game 51: 2 green, 4 red; 1 green, 12 red; 1 blue, 12 red, 5 green; 1 blue, 9 red, 2 green +Game 52: 1 red, 2 green, 9 blue; 6 blue, 5 green, 3 red; 3 red, 8 blue, 4 green; 4 green, 1 blue, 4 red; 2 green, 5 blue; 2 red, 3 green, 6 blue +Game 53: 1 blue, 16 red; 8 red, 4 green; 2 green, 3 red; 2 green, 2 blue; 20 red, 4 green, 1 blue; 1 green, 15 red +Game 54: 1 red, 8 blue; 2 red, 1 green, 6 blue; 9 red, 9 blue +Game 55: 1 red, 6 green, 1 blue; 1 green, 1 red, 2 blue; 1 red, 5 blue; 1 green, 1 red; 2 green +Game 56: 8 blue, 8 green, 7 red; 3 red, 1 blue, 9 green; 4 green, 5 red, 12 blue +Game 57: 11 green, 16 blue, 5 red; 9 green, 13 blue; 16 blue, 4 red, 15 green; 17 green, 7 red, 15 blue; 1 red, 9 green, 5 blue; 18 blue +Game 58: 2 green, 2 blue, 1 red; 7 green, 3 red, 5 blue; 6 green, 1 blue, 2 red; 5 green, 4 blue; 2 blue, 6 green +Game 59: 8 green, 11 blue; 13 blue, 4 green, 3 red; 6 green, 19 blue, 14 red +Game 60: 6 red, 4 green, 4 blue; 12 green, 2 blue, 13 red; 2 green, 1 red; 3 green, 9 red; 1 red, 1 blue, 2 green +Game 61: 10 green, 1 blue, 1 red; 11 green, 7 blue; 2 red, 3 green, 6 blue +Game 62: 5 green, 7 blue, 3 red; 9 blue, 7 green, 3 red; 5 red, 2 green, 12 blue; 14 blue, 10 red, 7 green; 3 blue, 1 green, 10 red +Game 63: 1 red, 4 green, 6 blue; 2 blue, 14 red, 1 green; 1 red, 4 green, 3 blue; 1 red, 2 blue, 1 green; 4 blue, 11 red, 6 green; 3 green, 7 blue, 1 red +Game 64: 14 red, 4 green, 5 blue; 7 red, 5 green, 6 blue; 8 blue, 8 red, 1 green +Game 65: 3 blue, 6 green, 1 red; 2 blue, 10 green; 16 green, 1 blue, 1 red; 20 green +Game 66: 7 red, 4 blue; 4 blue, 8 red; 2 blue, 3 green, 7 red; 7 red, 1 green, 4 blue; 3 green, 5 red +Game 67: 2 green, 14 red, 5 blue; 20 red, 15 blue, 2 green; 15 blue, 15 red, 1 green +Game 68: 6 green, 9 red, 7 blue; 3 green, 9 red, 13 blue; 9 blue, 4 red; 2 red, 4 blue; 6 green, 9 red; 2 green, 6 blue +Game 69: 8 green, 1 blue, 11 red; 7 blue, 2 red, 11 green; 7 blue, 14 green; 2 red, 10 blue, 8 green; 14 red, 4 green, 5 blue; 16 red, 5 blue, 7 green +Game 70: 7 green, 11 red; 11 green, 2 blue; 11 green, 17 red, 8 blue; 4 green, 7 blue +Game 71: 4 blue, 4 red, 2 green; 2 green, 6 red, 5 blue; 1 green, 2 red; 2 green, 6 blue, 2 red; 2 green +Game 72: 1 green, 1 red, 1 blue; 1 green, 4 red, 1 blue; 2 green, 1 blue, 5 red; 3 red; 2 green, 1 blue, 1 red +Game 73: 10 blue, 2 green, 3 red; 13 blue, 13 green, 4 red; 2 red, 8 green; 11 green, 1 red, 1 blue; 14 green, 15 blue, 4 red +Game 74: 3 green, 1 blue, 7 red; 15 green, 4 red, 1 blue; 3 red, 6 green +Game 75: 15 red; 15 red, 4 blue; 14 red, 3 blue, 1 green; 8 red, 1 green, 2 blue; 1 green, 13 red, 1 blue +Game 76: 4 blue, 7 green, 1 red; 1 red, 1 green, 10 blue; 2 green, 3 blue; 9 green; 4 green, 11 blue; 6 blue, 3 green +Game 77: 2 red, 8 blue, 12 green; 10 green, 2 blue; 7 green, 1 blue, 4 red; 3 green, 2 red; 13 green, 4 blue, 3 red +Game 78: 8 blue, 2 green; 1 green, 5 blue, 2 red; 3 red, 3 green; 3 blue, 1 red, 5 green; 3 blue, 4 green, 3 red; 3 red +Game 79: 8 green, 5 red, 2 blue; 1 blue, 6 red; 9 green, 2 red; 1 blue, 8 green, 8 red; 6 green, 1 red; 2 red, 9 green +Game 80: 2 blue, 11 red, 15 green; 6 blue, 9 red, 19 green; 16 green, 3 red +Game 81: 15 blue, 18 red; 18 red, 2 green; 7 red, 2 green, 11 blue; 17 blue, 8 red; 8 green, 8 red; 2 red, 10 green +Game 82: 6 blue, 1 red; 2 red, 5 green, 8 blue; 3 blue, 5 green; 1 green, 2 red, 2 blue; 2 red, 4 green, 5 blue +Game 83: 1 red, 16 green, 7 blue; 1 blue, 4 red, 4 green; 4 blue, 5 red, 1 green; 1 red, 7 blue, 11 green; 6 red, 7 blue, 2 green +Game 84: 3 red, 4 green, 16 blue; 3 blue, 2 green, 2 red; 10 green, 15 blue, 3 red +Game 85: 7 red, 2 blue, 15 green; 1 red, 12 green, 6 blue; 5 red, 16 green, 1 blue; 8 blue, 10 green, 3 red; 3 blue, 2 red; 5 blue, 16 green, 4 red +Game 86: 10 red, 3 blue, 4 green; 1 red, 2 blue, 3 green; 15 red, 1 blue; 2 green, 2 red, 2 blue; 4 red, 4 green, 1 blue; 3 green, 2 red, 3 blue +Game 87: 19 blue, 2 green; 12 blue; 15 red, 2 green, 20 blue; 14 blue, 9 red; 6 blue, 3 green +Game 88: 19 green, 4 red; 2 green, 7 blue, 17 red; 7 blue, 9 green, 8 red; 9 blue, 5 red, 14 green; 11 red, 9 blue, 19 green +Game 89: 20 blue, 13 green; 4 green, 5 red, 14 blue; 3 blue; 4 green, 5 blue; 3 red, 6 blue, 7 green +Game 90: 1 blue, 12 red; 3 green, 9 blue, 8 red; 2 blue, 3 green, 10 red; 8 blue, 5 red, 1 green +Game 91: 4 blue, 2 red, 5 green; 5 blue, 5 green, 2 red; 3 blue, 14 green, 3 red; 8 green, 1 red, 8 blue; 8 green, 2 red, 3 blue; 19 green, 8 blue, 10 red +Game 92: 11 green, 8 red, 5 blue; 12 green, 14 blue, 11 red; 4 green, 16 red +Game 93: 13 blue, 3 red, 3 green; 2 green, 6 blue, 3 red; 2 red, 19 blue, 5 green +Game 94: 5 green, 7 red, 10 blue; 5 blue, 8 red, 8 green; 5 blue, 6 red, 4 green; 12 blue, 9 red, 4 green; 6 blue, 5 green, 5 red; 8 green, 10 red +Game 95: 1 red, 4 green, 10 blue; 7 blue, 5 green, 3 red; 13 blue, 2 red, 4 green +Game 96: 2 green, 1 red; 5 green, 10 blue; 3 blue, 5 green; 1 red; 2 blue, 6 green +Game 97: 6 green, 12 red, 8 blue; 4 green, 7 red, 7 blue; 1 green, 4 red, 9 blue; 7 red, 4 green; 6 blue, 10 red, 15 green +Game 98: 3 green, 5 red; 12 red, 11 green, 1 blue; 16 red, 4 green, 1 blue +Game 99: 8 blue, 7 green; 1 green, 5 red, 3 blue; 7 green, 1 red, 2 blue; 5 green, 3 red, 12 blue; 2 green, 7 blue, 3 red +Game 100: 4 blue, 1 green; 13 red, 2 blue; 16 red; 15 red, 2 blue; 9 red, 1 green, 1 blue; 7 red, 4 blue \ No newline at end of file diff --git a/day2/sample.txt b/day2/sample.txt new file mode 100644 index 0000000..1cd7d33 --- /dev/null +++ b/day2/sample.txt @@ -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/day2input.txt b/day2input.txt deleted file mode 100644 index f7a1314..0000000 --- a/day2input.txt +++ /dev/null @@ -1,1000 +0,0 @@ -2-4 r: prrmspx -5-6 p: hpzplphxb -5-8 t: ttttbtttttc -1-6 k: kkkkkk -1-3 q: qqqq -4-8 t: pctpfqtrtttmvptvfmws -3-5 z: zznzslv -12-14 h: hhhhhhhhhhhhhhhh -14-15 v: vvvvvvvvhvvvvdmvv -8-17 x: xxxxxxdxxxxxxxckxx -11-12 f: gkfjnffjfcmfwk -10-12 s: xsgsssshbmsbnss -6-15 s: sssssnsssssssss -2-8 d: qnqtrqdrnvq -5-7 k: lhxkkkk -4-5 k: xkkkk -10-16 v: vvvvvvvvvcvvvvvpvv -1-6 f: ffffflfffffff -4-5 x: fxdnq -10-12 p: mkspmhlldqjh -10-12 r: rcvzzcbdgrcr -4-7 r: rxbkrrrzrrrtrrr -18-19 k: kkkkkkkkkkkkkkkkkkk -1-2 f: sfffffffffffffffff -1-5 z: mhkzwdxklf -2-3 r: qzbgrghkmlpxdvd -2-3 q: mqqpcxbqdf -7-8 r: rrrrfrrj -1-9 x: vmxsmwhnxccf -9-10 t: ttttttttppt -2-4 x: rxxqxx -16-17 k: jkfmnwkkztnxvlkkw -3-4 c: ccbpccccczpcccc -5-8 g: ggggjggg -1-3 z: szzzzz -8-9 l: xnllznclz -4-10 m: pkmmptjvgsnwmxm -1-2 r: mbrrtkrjdr -1-3 c: ccqscsxcnctwlvm -4-6 p: ppppppppp -3-5 d: wdddxvmnbdhvzdgqbdm -5-7 n: nnwbsnqnnvn -2-11 j: sgbxjvqnbmq -5-13 q: qqqkpqqqsqqqxqqqq -2-12 m: kvwlwmmvhbpgmnzfddms -2-4 j: kjgcpgxgcphkqjjmbwd -3-6 v: tdvlvv -10-20 n: tnmhnlznnpnmnfnngnnn -4-7 h: hhhhhhhh -9-11 m: mmmmmmmmrmm -7-9 b: mbnbbbbqk -9-10 z: fqzzzmzzzzj -3-15 s: chdpzcpgsgrkhss -3-4 k: kklz -1-5 q: ltqqqxcndqrq -9-17 m: mmmmmmmmqdlmmxbmtmmm -14-16 k: kkkkkkmkkkkkjtkkk -8-9 k: kkkkkqkkxlk -2-6 n: kbhhjhdmgtn -3-8 w: rcwwwkqwbwkwmdqtwmw -10-11 x: snkbxmwqwxp -2-5 m: pmhmp -6-7 b: bbbbbbq -3-7 l: cfqmljq -9-13 q: qzqqqqqqqlqdt -2-10 w: kmwqwtwkssd -4-13 t: ttblttttttttftt -14-17 l: llllllwllllllwllclll -3-4 p: xzps -10-14 b: bjbbbbbpbdbbbb -5-7 v: jlvhjtvx -6-9 r: bscrrrrcrphffdw -5-7 r: brrvjrxfrljwxp -15-16 b: bbbbbbbbbbbbbbbb -7-8 h: bchfxxshh -2-13 z: zzqzzzzzzzzzzzz -1-5 b: bbbbrbbhbbbbbcb -2-3 k: zkkzjld -4-6 f: fnffffff -8-11 d: qdvdddddndphdndmgdkp -17-18 q: qqqkqqqqqqcqqqqtqq -11-16 m: mmmwmwxvmmmmmmmmmmm -12-13 v: vvvvfxvgblvvk -4-6 v: vsvvvvv -2-4 p: rqgm -7-8 r: rrrrrfrf -2-4 j: xpjjl -7-8 b: wdpbvwbb -15-16 k: fkkkskkkmkkkkkkk -10-14 s: shkscsqjszstssv -3-4 l: lllw -2-4 n: gjbnlsxvqmvxgcwntvvs -6-12 l: lclllgllllllll -16-17 b: bbbbbbbbbbbbbbbbbbb -7-8 q: pqqqqqwq -1-2 r: rrzsr -1-3 r: rrfr -16-17 f: fffcfffffjfmrzqffnr -15-17 h: bhzhhfndwgdhlhhhjh -7-11 t: vtwnrwzczmtwn -3-6 v: vvvvvmvvvvvv -4-5 s: ssptsss -1-3 t: ttntq -5-9 g: ggggtgggcg -7-8 h: hcjdkphhb -15-17 j: jjjjjmjjjjtjgvnxk -3-4 q: qqqq -5-7 g: lggsjqlg -11-18 m: mmmmmmmmmmqmmmmmmf -1-14 x: xxxxcxxxxxxxxxxxxx -7-8 f: ffffffbffff -3-4 t: xmct -3-4 x: xxtcd -1-11 x: xcnxxxxvxlxkmcrxn -8-11 h: hgnhkhhshhnhhzdhllw -8-10 z: zdzzzzzrpvvzzqz -6-7 r: lrbrrprrxr -6-10 n: fnnwnpnnjnhmnntqn -10-15 b: bbbbbbbbbwbbbbbbbbbb -13-16 z: zzzzzzzwzzzzvvzkztjz -5-6 t: xntkwthxbdtlmxtpzz -5-13 r: njrlghrrxfrfv -11-14 s: vssnzksspscrss -7-10 c: gtrkbcxccccccchch -6-11 v: vvsvvvvvvvvvvvvv -17-18 b: bbbbbbbqbbbsbbbbsnbb -13-15 x: smxxxjxmmkxxxmxx -10-11 h: hpqqwkxnfhd -15-16 j: jjjjjjjjjjjjzgjjwjjj -3-5 f: cjcff -3-4 z: hnfzzzmq -11-14 c: cccccccccczcckc -2-7 t: tstmdtk -2-3 f: wffkfm -7-16 w: tvgdzjjqlwzknwvwgzh -1-2 d: dzdqpn -8-14 j: jjzqjxjjsjrngzfj -6-9 h: xknzmlzpbpzcth -2-5 j: njmnj -10-15 z: kfqlljdfzzczzmp -7-12 g: gcqwnmgjhcrjnzwcmw -3-4 h: hhjhh -5-16 d: ddddddvddddddddddd -1-2 p: fwwtpllzbmjbwcnkbh -10-18 p: vhpwpppxfppppvppdh -2-6 x: rqgqgx -11-12 m: mhpmmmmmmmmmmm -3-4 z: lzzf -5-8 w: vfwwmlwfvwwwwlh -3-10 t: ltgtztzlct -7-8 k: kkkkkkmk -10-13 b: ndflbblbchkbq -18-19 z: zzzzzzzzzzzzszzzzzzz -2-5 n: nlzrmkhz -14-15 v: vwvvvvvvvvvjvmcvvv -13-15 p: ppppppppwpppxph -6-9 k: jvhxzwkkwkzv -9-11 s: snspssslkss -13-18 j: jgjrjjjjjqjjjhjtjj -5-7 v: vgvrhzvvv -1-7 t: ttttttttttttt -8-9 n: nnnnfnnnj -2-5 x: dxcrxhstqwldt -6-12 s: dkshssdsltspgcb -2-7 k: kkkkkkkk -7-13 d: vbjsdddfstdhtdxl -12-17 r: nrrgrrsrrrrkrrrdt -3-5 w: wwwjw -5-8 l: mlfldllll -4-5 m: mmmqm -9-10 j: sjtmlxjrzl -2-14 h: hhhhhhhhhhhhrnhhwh -3-4 b: bbbw -12-13 g: gggggggggggzg -13-14 t: tttgtttrztstltlhb -14-17 s: fhdxfshbglsvjsgbs -9-13 x: xxxxlxxtxxxxxxx -2-3 j: jjtn -12-13 n: nnnnnsnwnnvmq -3-6 z: gzzzbzmzzzmz -3-4 d: ddnt -2-7 s: pswmrnsrgb -8-9 q: qqqqqqqdv -5-6 s: sdlcqs -6-10 f: jffwjfhfff -4-5 p: pmpppps -9-14 p: pppppppppppvpppppppc -3-9 n: nsnpnmmnnwtnvb -3-4 b: bhzh -7-9 g: ggggggggng -10-11 x: xwxxxkxxxjxqxxxbbxx -17-18 k: kkkkkkkkkkkckkkkkk -3-4 v: vvrv -12-14 s: vdsrgdsghxcblflbwj -8-13 h: gxzhhbkdgfdglfqqcls -4-6 m: mmmvmfmmmmm -2-13 b: lbtzwffqfrfhbwb -1-3 r: lrcr -3-6 j: cjtcjj -5-8 z: zzztzmzz -4-12 t: wttrttvtgttztttdttst -6-7 n: zbfvmngknrzfzqpwhtx -12-14 g: gggggggggggggbgg -6-10 k: jkkkkkrkmbkdh -14-19 m: mmmmmmmmmmmmmmmmmmfm -2-4 d: sdft -4-10 g: bgtgsbjcqgt -2-4 t: trtqt -7-11 b: wjbbsqsvpkpb -12-14 z: zcfqlkxghjjpjzsc -3-4 g: ggjt -5-7 r: zdrrqrrrrrr -15-16 p: brpvpplmhvnbxppc -15-16 b: bbxbbbbbbbbbbbbb -8-11 c: hscggrpcpbxrxwgsv -10-15 j: jjjjjjjjjnjjjjmjjjj -4-6 g: bgkghgc -9-15 c: ccjcccsbcccspxc -2-3 v: fjzb -2-3 h: hhhxlchhwmjjzj -4-11 x: xxxxlxxxxcxxxxk -6-11 d: dvpdmdddzch -5-6 j: jjjjjjdjwj -6-12 p: pppppxpppppbppp -1-7 q: xqqqqqqqqqqqqq -5-6 w: xwwrtwjpwgsw -11-13 k: kkkkkkkkkkckfkkk -2-3 m: qbmnxlwmldmmc -2-3 w: jqlwws -6-8 k: kkkjbkmz -10-12 m: mmmmmmmmmvbm -6-13 n: hqnkdmwnxnwndnxgl -1-5 j: jjjjb -16-17 x: gxxxxxsxxbxxxxxmp -3-10 s: ssrsssssss -3-4 s: rslpsx -1-10 g: qgggjgwqzggvzflmj -8-9 g: gggbngqghg -1-3 q: qqqfj -3-5 m: mmmmzmmmmm -7-8 q: qqqxqqgqq -1-2 j: rpdjrrt -7-10 v: mdzpkvvdpv -12-14 m: xzmmjmhmmmmktmtmmmm -6-9 m: mmvbmvmzm -7-9 c: gcccqmlhc -6-8 z: zzzzzznrz -4-7 w: wwwmwwww -1-4 h: vhhhhh -13-14 z: xzzzjzzzzzzfzz -1-3 l: jlqml -10-12 f: wdbfzsbwffgf -4-8 p: vjpppfppxppjmctw -18-19 x: zkxbllxbtbzggncfxxx -5-6 x: xxxxhxxx -2-6 v: tvdprvvrvv -5-14 k: jkdhkhdhjgmtkk -1-2 k: sskk -5-12 w: mvqtkwwmcwwlkw -2-6 v: gvmlvv -12-13 p: ppppppppppppbp -3-4 r: frrrr -13-15 r: qrrrrrrrrbrrrrr -5-10 b: bxkbrbkdtwwrbkskjpc -4-5 x: bxrcx -12-15 f: ffffftjfffffffzfff -6-7 g: ggggggzgvxggg -10-11 w: kgwhvwwwwtcwp -9-10 j: jjjjjjjjpjj -5-12 t: pnbsttwccrtvttm -2-8 c: wcccccxfccnkvrllg -2-9 j: frddhfbkkj -9-11 m: mmmmmmmmtmmm -9-10 m: mmhmmmmmtm -2-4 r: crtr -14-15 v: vvvvvvvvvvvvvlrv -5-6 c: wccwctch -1-13 c: lcccccccccccfccc -12-15 x: zppxdwxtplfvzfxlwl -4-18 c: cccccccccccccccccc -2-3 c: xcccc -1-7 q: qvfbcfqx -6-9 k: lkbkhkkmsjlk -7-15 w: wwwwwwwwwwwwrwwwwwww -2-5 s: lscsssqsn -16-17 n: nnnnnnnnnnnnnnnnznnn -4-5 g: ggggggg -2-3 w: mfdw -4-5 r: rfrqh -3-7 f: vfpfbzf -8-9 j: jjjjjjjcbj -10-13 p: pppppzpppppppp -8-10 t: tntbgchftpttttttfttt -4-7 r: rlrbsmhnrqrbxrnlrm -13-17 m: vkmmmdhfkmtmgmxhk -9-11 t: ttttttttttt -16-17 g: gggggmgggfgggggsggvg -5-7 w: wpffgdw -3-7 r: rrzklzbmrrr -2-3 l: tllcqnlwfvlfmcgssg -3-4 q: qqqp -3-7 x: xnxxxzcxrqwx -7-18 s: shssssfwssssssksmss -1-4 r: rrrrmbc -2-6 t: tttdmsmtg -3-5 h: tmhbh -4-15 c: ccccccccccccccccr -8-10 v: vvvkvvvhvk -3-6 r: rsmzcrhqnxljrnnd -2-3 s: msss -10-18 w: wwwwwwwwwwwwwwwwwnw -11-13 j: hmwdjqjhjbfdrhj -5-17 x: hxpnccxhwlsxxdmxxd -4-5 t: ttznj -6-7 l: llllllqll -1-3 q: qsqnhqm -4-6 t: tdtttthc -16-17 x: xxxxkxxxxxlmxxvxfx -7-11 r: prtrxrprrrrr -5-7 j: mjjqjjg -3-8 l: rnllnklplllllllll -10-15 p: pppppppppdppppp -2-6 g: grgggx -3-4 s: ssqss -1-4 t: tttq -6-9 w: fxvvndkmwlskw -11-12 c: cccccccccccp -4-9 b: bbblbbbbbbbbbb -2-3 g: hggnbw -17-20 x: xxxpxxxxxxhxxxxxfxxx -1-2 f: bpvf -3-5 j: wjbfjw -13-19 m: srmmmmmmmmfhmgmmmqs -10-16 c: cccgcczcccccccbcfcct -11-15 b: bzpqpffbfqslknb -2-5 t: stnztmvjg -3-9 h: hqxhxxhhwh -2-4 r: rvrz -2-3 p: pppk -7-8 s: sskssjdss -5-9 x: xzvjjkmqzthpht -12-13 p: pstcvcjlnwsqphwnsr -3-15 p: lnfhbvnpmfztbqppcf -14-18 l: lllljllllllllllgld -4-5 g: gctggxhgpxkx -7-8 q: qqqqqqrdq -10-13 c: ccccccccccccc -4-9 s: sssnssskwsbfssssss -10-12 g: zgpgghbggjqgggkggjg -3-18 m: mmmmmmmmmmmmmmmmmkmm -1-3 z: jzzzz -1-4 k: fqqwmd -4-8 r: wzbrhxrw -2-13 x: fzvhrqwcrjjzxprnxlk -9-10 q: qqjqqqhqqr -4-10 g: mnlggbkdhrgtndk -4-19 w: wksmppsqrpppfkdzlrg -6-7 k: kkkkkxwkk -15-18 t: tttttttttttttthtttt -8-13 k: kkkkzkkvkkkktkkk -1-5 j: jjlqrwsjzkjbl -6-9 m: gmmmdmmmbmmdxmg -4-5 r: gdbfmxnrmc -3-4 h: rhhhh -2-8 n: nnnnnnnln -4-9 x: fxgwflwxblgnwxv -3-6 x: xmkxxvxxs -1-15 g: jgggggpgggggggpg -2-7 n: nwnnnnnn -2-4 r: hrwcr -5-8 x: tbbtxltxdsftztx -3-11 r: rzrwrdbqkhrbldrgph -2-10 j: jljxrjjxjv -17-18 b: bbbbbbwbbbbbbcbbtb -10-11 w: wwwjwwwwwrw -1-2 h: qbhh -2-3 r: rvjr -10-13 b: bfbbbjxbbjbbwblc -2-4 j: qjdt -4-5 j: jjjjjjbfjj -11-14 d: pssdgpplqjdzxr -4-8 x: zxgxfxjhjxgv -6-7 g: gdnhggz -3-14 f: fbfffsjffffffgfffff -2-7 f: qtxmpvfscrbgxfq -6-8 w: wwwwwlqwwswww -2-9 g: gbnwwncws -1-4 t: ttbctt -3-4 g: gggbl -5-8 h: hhhhhhhhh -9-16 n: nnnnnnnnnnnnnnnnn -3-4 x: xxxxxx -3-4 l: psgl -4-7 p: pppntst -4-13 m: mvdmnfnnpxjtmgnwgc -9-15 p: pprtppppwnphlhf -7-10 v: vlvvbvqtvp -11-15 k: jmckdsmvzptdslkkjqf -2-3 p: cwkf -8-9 r: rrrrmrrhhrr -7-8 h: vhhhhhhjh -4-5 z: zzhznzk -10-13 n: qnnnksnsnvnnnnt -1-4 m: jmmmmm -5-8 w: jpcmlxtwzvhww -10-12 k: kkkkkkkkkkkkk -11-14 g: ggggggrgmgggnhgggg -1-5 z: zzzwz -2-4 x: xxxxxxx -6-14 c: cccccvccccccckc -11-12 z: zzzkzzbzzcvz -13-18 p: pppppppppppppppppxpp -9-14 c: tcnphlfkczmcpc -7-8 n: wnzmjcnn -7-11 p: ppspppmdppp -2-6 w: wdwwwww -2-4 w: qzvw -8-9 j: njbvchssj -2-7 b: fnbbbnp -3-4 c: ccqv -1-5 x: xxqxdxx -3-9 w: wzwptwtwwwswbqmk -17-18 x: xxhplchxxxxxxxxxgm -4-5 g: fsggvmg -1-12 w: lwwwwwwwwwwwwwww -3-4 b: kbnvg -2-7 t: ztttmfftttrtttt -2-3 n: wqvnsn -1-6 z: qfddndzzg -15-17 z: nfzxdmgdvjzzpqdjt -1-5 g: mggglgggg -5-13 x: xxxxgxxxxxxxrxxb -12-13 x: xxxxxxxxxxxcx -5-6 r: prrvrrrrh -13-14 h: hhhhhhhlhhhhmz -8-10 j: jjjjjjnlbjhjzjljj -1-7 w: wwwwvwkwwb -4-5 h: hpshh -2-12 f: vhptghgvhqsf -16-17 w: wwwwwwwwwwwwwswzww -16-19 x: jltfxxfgkkxnnxjkrxz -3-13 s: ssfpvsssshssrxss -4-9 q: qsqqrqqqqjkqqkqv -9-11 h: djhvttnrjzh -2-3 j: jjjz -3-7 j: jtjqgmj -4-8 p: ppnpcpppspgpc -9-13 s: sssskslspdsnss -6-10 m: mxzlmmmpvgm -10-11 c: cccccccccwnc -6-8 f: klkqkthgzfbb -7-9 t: tttttttmx -2-13 r: nrlmjrhxwnjsrwfx -12-13 x: xthxxwpxsdxmj -3-11 r: nqgznrmqhcm -3-4 c: rqcxmgc -12-14 f: ffffffffrdfjffff -14-15 d: vdddxdddddddddddd -4-8 m: mmmcmkmmmmmkh -3-4 g: ggcggsm -7-10 p: pppppphppw -11-17 f: fffftfxbffffffffrff -1-18 f: ffffffffffffffffffff -4-6 x: mxnxkx -3-7 g: ggrlrmhggl -1-2 b: pbblqxtlztwcbt -4-5 c: ccccz -1-4 k: kqkhkkkk -9-12 v: vtvvgvvxvvvvv -3-4 g: ncgbnrvdbrm -9-12 t: tttttttttttttttt -14-17 c: crncccqdsjcclcxcmdw -8-10 h: hvhpghvhnfhhh -4-12 p: ppplpppppplnpppp -4-5 l: lrlllllnlllq -3-14 p: ppnppppppppppcpppppp -2-5 v: vmvvbv -6-7 v: vcvvvqvvvvvjvv -4-5 l: llllhl -5-12 h: hjhphkxhkcqh -6-7 f: fbskrlff -4-5 k: rkfnrk -1-4 q: tqqkqkqqcxq -6-7 p: pppppxp -1-2 f: fnfffffffffw -5-18 p: ppfpppppppppppppppp -1-5 d: dwndd -8-9 h: hhhhhhhhh -3-6 l: llllllllll -9-10 r: gvhwsfbckr -7-16 h: hhhhhhhhhhhhhhhhh -1-2 j: tjjlj -5-9 b: tsvwbmbvbk -1-8 r: vrrkbsrrrrkrrcrr -1-5 b: hbbbbbs -7-8 j: zgjwjcmnjjjljnvjjgj -11-15 z: zqzzzxvzzdmzzzzz -2-13 q: tqqnzjjxvcsvqksl -6-10 f: fqqczfhfmf -2-14 v: vcvvvvvvvvvvvvvv -1-5 c: kgcdcckbc -3-5 r: rrdrr -15-16 f: ffffffffffffffmbf -10-11 s: ssssssssssssxssnss -9-10 j: jjwjjjjjtkj -4-5 v: vfdvv -2-13 z: znkpztzzzzzzznlwzz -3-4 r: lrrm -15-16 n: nnnnnnnnnnnnnnsnn -6-12 n: nxnnxnnnpnnnnvn -4-8 q: lqsqdcqq -15-16 x: xxxxxxxxxmxxxxxtxrx -6-17 h: hhhhhhhhhhhhpjhhh -11-15 c: cccccjccccpcccc -11-12 r: rrmrhvzgrtrd -3-7 b: bwmbbblb -8-13 v: zlvhjhjhtwtkbxqqw -6-9 p: pppppfpppppk -2-5 r: rcrrjr -14-19 f: gfbrfsffprfffhrffzm -3-6 r: rrsrrtr -4-6 j: jjzjbz -1-4 l: jllnl -6-7 z: zzzzzppzzzzzz -17-18 h: xjvnmlhhnlxltrdltgr -2-14 z: xhtwcgngdxlzhnv -3-5 v: xvvrvvv -11-14 v: dnhpmxjvmwrknvvpr -8-17 w: vnwpmbbpmcwwgpwlwh -4-5 f: fffjl -13-16 v: vzvgvvvwvvvvvvvjvvgk -8-9 n: nnnnnknnn -18-19 g: gjgggkggggkxgpgdglh -2-4 t: ptkzwltkr -17-18 q: qbmbqqlqqjqqhtqfqq -3-6 r: rfkmhfd -4-7 h: fghxhhhh -4-5 s: spsxv -3-5 k: dkpkzkl -7-10 n: nzpnnnlnnsnnn -3-4 h: hhnh -19-20 r: rsrkmcrhkqfrfdqmlvxq -9-10 m: mmhmwmwmmvm -3-9 j: jdjjjjbjwjjjjjjjjjj -1-2 s: mpsscts -3-4 g: nghj -6-10 x: xxxxxnxxxhxx -10-13 t: tttttttttqttvtttt -12-13 s: nssssssnsjrss -7-9 z: hjkzxlzrczhhmm -16-17 s: sssssssssssssssfpsss -4-5 x: xxxxx -2-4 c: bppcccfwqs -4-11 w: wwwwwwwwwwwkw -6-8 m: hdxjhkpjdjmrql -2-19 k: zkhcfxztkgltmqbdqxj -1-3 n: gnqnnnnnrnnn -11-13 f: ffffffffgfmfkf -1-5 z: lwzkxzjzv -11-12 m: mhlxvjmrcffn -2-7 z: cqhbjlbzh -3-18 k: kdkkkfbkgwkdknkkkzjk -9-10 b: bbrbbbkcbbbbbzll -5-6 l: llplkl -9-15 c: vcgcngchvkvjsgcf -3-6 q: qqqqqwq -9-11 k: kxkjrpkkckkkkkskk -9-18 k: hbkrrwvctstksttkwrvf -2-3 j: jtjj -1-5 n: nnnnln -1-6 b: jpmbbbbqkd -5-7 w: wwkwwws -3-10 m: pxpwzblsvrlsxjpvpslt -11-12 j: ljjjjkjjjcmc -10-11 q: qqqqqqqqqqq -2-7 h: hqqhkbh -7-9 l: lllclmfslldrlsl -8-9 h: jhtvlvrhhhkhh -3-6 k: kkjkkkk -1-5 l: vllllc -1-2 q: vqqq -5-6 q: mkqhjp -7-14 l: lllllllrdlmlckll -3-4 k: kxkkrjk -6-8 l: pslrqlbl -1-8 t: gtzthtct -5-7 d: lhxkdrddf -2-3 h: hmhh -7-9 p: ppppvppppvwp -9-11 q: jhzvqqbqfnql -9-14 r: rrrrrrrrtrrrglrrz -11-12 s: shsssssssssbs -1-7 t: qtttttt -11-16 s: spgsmwbrshhldcsvvx -5-6 l: lkmlll -2-9 h: vdchgpmlhvxzjcp -4-7 k: xfkkkkkckmkk -1-3 w: wwww -13-14 c: cccccccgcwcccxdc -12-15 w: wrlwwxwwwlwwwfwcw -5-13 m: jmtjqmvkmpxdmt -7-11 m: nxnkxfgzcpfm -8-10 m: mmmmbhmmmk -11-13 z: khcksspxzwmznpl -6-7 x: xkxxcxj -8-11 s: sssrssssssss -6-12 h: wkzcnspbtjwchv -8-9 b: bbbbbbbkb -7-8 d: hxsjqfddxdb -15-16 g: gggggwgggggggggg -8-10 q: gqqzqmltqqlkqwtzgfn -11-16 j: kjsjjjjjjjckjjjj -2-4 s: vbfqcmgssqb -16-17 r: rrrrrrrrrrrrrrrrr -7-11 d: ddhdddrddtdd -2-3 x: gvpcx -4-10 t: mbftjndbttv -13-14 j: zjjfmsgqtgwdhd -6-11 s: qlqhssgsbvnsts -9-15 t: ttdttttvttttqttvs -3-6 l: lcvlll -3-5 x: mpdsxrhqlbcdx -1-4 q: kjqz -2-3 p: pncmptpppgp -2-6 l: tlbvnpllvxlgxhn -14-17 q: lgdsvqxwmhdwzhjsq -13-19 m: mmmmzmmsmmmmmmmmmmc -4-5 x: xxxxzl -2-4 n: nnrn -8-9 n: nnnnnnnns -11-14 l: bpmrcbhslcmxxv -7-12 p: ppmpvpppppkpfpp -4-10 k: kkkqkkkkkfkkkkk -8-11 s: sssfssssnssssss -8-16 l: xklrjlllrqlxhrkl -2-12 r: rrcrqrprhcrrrvrph -14-15 h: jrhhjhhhhhhzhmp -8-12 m: mmmmmcmmvwmmx -2-9 f: ffdffffmfqpffffffff -8-12 x: xxxxxxxgxxxr -5-6 z: zzzzzxz -14-17 j: jjjjjjjjjjjjjzjjs -1-3 f: qfjmrf -6-7 t: ttbttdq -8-9 x: xfxxxxxxxxbxxxq -4-6 q: qqpgwqbr -5-12 l: lqzqrtgjmzml -5-7 w: wwwnwjwwfw -5-6 x: znxdtx -4-5 x: qqxhvmxxxxz -1-5 n: nnnnnn -2-5 s: gxsnj -5-7 s: gssjssszst -9-14 h: zjhrdpjwhkppdf -2-8 t: ftgttpcttxtvnttntjs -1-4 t: lttl -8-10 f: fffffffffrf -3-6 q: qvqxrhd -9-10 j: zrfxvmhgzcnkthzs -5-7 q: rqtqxqq -2-4 j: jxnj -7-8 c: fccccczkc -1-2 x: xktx -5-6 t: tttqkt -3-4 m: crbhwmq -5-7 d: ddddhdcd -3-4 w: wwcn -2-7 d: dmdddcd -6-7 l: llzllfg -5-8 l: llxllllllf -3-4 s: lspsb -1-6 k: kkkkkdk -6-12 x: ztxxmxxqxrxxxcxx -5-12 p: fpngpxprbqhprvj -1-11 k: kvkkkkkkkkkkkkkkk -2-11 x: qxxnxxxxxxxmxfxjsg -12-14 r: wzrrfztrbrrrztgrgrm -1-4 r: rbrlrj -14-16 d: dddddddddddddsddd -8-15 l: lzllmllclllljlll -7-8 l: qkgqklzzllqclqlfjl -1-4 g: vggggg -12-13 c: krbpskrctrvtc -3-6 t: btttttmkt -8-12 t: tttttttttttltttt -10-16 k: kkkkkqkkkkkkkkkw -5-6 d: ddldvkd -10-14 v: vvbrvvvkbvgvvr -4-13 v: vvvcvvqcvflrph -7-17 x: qxfxxxxvzslqzzbcx -9-10 g: ggggggggvjggggggggg -3-4 p: hpppkp -1-3 s: lstcssssv -4-6 n: nnnsnmnnn -2-6 k: kkkknkvkg -1-2 c: cccccc -8-13 h: hhhhhhhhhzhhv -10-13 h: hwvhhhhjhhthhhhlxh -15-18 p: pzpgpppppgpxpppbppnp -10-11 n: nffrjnmbnxj -5-9 l: lllldrllbzljsw -4-8 j: jjmjjjrjsjjjjj -2-9 v: vtzlvvdjv -2-3 g: ggcf -9-15 b: psxgbbcjbbhbntb -15-16 q: qqqqqqqqqqqqqqqz -11-12 c: dvgckwdtcccc -5-11 s: nskssssssfwb -2-7 p: pdfdnpqppzpp -3-7 d: dcdwnmdgnstt -13-14 w: hwdsrqmdmxhlkm -5-7 l: lzzdzlvrtgzllcn -5-6 t: bttttvt -6-8 c: crcczxckcc -5-7 g: gmvgggg -7-9 g: gggggglgqgg -5-6 t: ttttrt -2-3 g: sntggpm -4-6 m: flmmsm -9-12 w: wwwwwwwwwwjw -6-13 x: cfxrwlljbnzlb -13-16 v: wvfcgrgfvggjcbqv -7-8 n: sdnrsnhn -1-3 q: qqqrqmjfq -4-6 s: bzdsslss -1-5 f: rfffcf -4-5 s: sssss -4-5 h: xhkhhh -10-11 g: ggjdgpvggggx -9-10 v: vvvvvvvvjvvvjvwvv -3-7 b: fbbmzbblqzvfgpnrl -6-11 h: hhhhhlhhhhchhhhh -3-4 l: llllstmhwlchzd -3-7 t: xthsjgtcblcszn -2-17 f: kfjwdtmhzjzlvhpjf -2-5 b: rbtbg -9-15 z: mzzzcfzzzwvtzqgbzjzm -6-12 f: qgtzmktjffmfn -11-17 f: flcffsqwlfjvbcffb -5-6 r: gsdrrr -13-14 b: bbbbbbnbbbnbbbbbsb -2-9 b: bcbrvbvbbbzb -3-5 t: tkttft -6-7 v: vcvlqvdcvdh -7-13 w: wwwxwwwwhwwwlqwh -5-6 z: zkhpzzjtnkjzf -7-9 p: pppppppppppkppppp -4-7 p: spppfjmc -8-9 k: sxnkplwfz -4-5 r: clpgrr -7-8 m: mmmntmmmpmmmmrmpk -4-5 j: jxbjnxj -3-10 b: jwbclnqzdbnb -5-6 r: rxbxlnsmrrfr -3-4 f: fvfsbq -2-4 x: sxxxd -7-8 p: qpppppprpp -3-4 q: qqqq -6-8 n: njwgnqntnnn -6-10 z: zdzzgzzzzj -6-9 d: rwdlfdrtd -5-6 l: skllpxslll -5-7 d: dwdznhddttljdnvkdws -1-3 d: dhdc -1-11 s: sqgzsrrvgms -8-14 w: wvvwrwwlwwmwwwn -11-12 t: ttbttttttttttttt -17-18 f: lfffffmfffffffffkff -17-19 k: kkkmzkkkrkfspllkckb -4-7 f: fxfjtdfcxff -4-10 h: hhhrhhhhhhhhhh -6-7 p: ppkpppppp -5-10 c: hccpcgbkbctctp -5-11 l: llllvljllltlllplll -5-6 c: kcntkj -16-18 m: mmxmmmmmmmlmmmmwmmm -4-7 b: bbvbbrbb -6-7 n: dbrqnnn -3-4 h: hhhht -11-13 s: sssssssssvlwxsfj -3-9 g: zrsdrgrzgghxj -14-15 f: ffzgnqfrclzgxfffff -7-8 c: cccccccbc -5-8 s: ssssssssss -8-15 k: klkkkppksvdrknd -4-6 h: hfhhjljh -8-15 c: cxljcccvhpklxcr -3-7 h: kpnttrczt -14-16 p: tqxpdpddrwfxgjvc -12-15 j: cjjjmwjdbtpwjmjcg -11-17 n: nnnnnnnnnnnnnnnnln -1-8 s: sssswsms -9-10 w: wwwwwwwwww -6-16 v: gvfjvvvvvqlsbrvvd -3-8 q: rvfnrfvsmjk -4-6 w: wvpwtww -7-10 c: xcctfssplcdqrpqs -4-10 j: mjcjjwvjwjm -7-11 w: qmwjfrjpjkqww -6-18 r: qvvthtbxlkrnvqzvlf -10-12 f: ffglffjffffctfffff -6-7 x: xxhxtfpqxxx -9-10 t: tttttttxtt -3-10 j: cpqxwljhgjldfns -15-16 q: mqqnqfqjfqqqzqqt -4-12 f: fffffffffffvf -4-10 s: ssssssszst -1-6 x: xgxxxxxxkx -2-4 z: zzzb -11-13 j: jjjjjjjjjjjjv -1-2 j: hjjd -4-12 h: hhljhhxhxnhr -6-10 b: bbbbbkbbbv -7-8 m: mmmmmmgvmm -9-15 h: hhhhhhhhwhhhwhhh -1-2 g: gvglg -4-10 v: gkbvgntvrvv -9-10 p: mjpppbppnpjv -1-3 w: wwwtww -1-7 v: vmvsgjdfdpwtvqqfsh -10-12 c: ccccccccclmcccjc -13-14 g: gggggglgrggqzgggvbgg -1-6 p: mhptnp -10-11 n: nnnnnnjnnpxxn -2-5 l: tllcc -13-14 j: zbvlwljjgljwjj -10-11 p: ppppppvpppjppvp -12-18 c: cccccccccctdccccch -15-16 j: jjjjjjjjjjjjrjjj -5-8 t: gjkttztjt -5-9 k: kjkhwdvkk -5-7 p: pjvpppp -2-4 w: wwwhwlwwm -4-5 m: mmljm -6-15 b: rbbncbrvmdvbbqb -13-15 n: nnnrnnpdfnnqnnncnfnn -2-11 r: srfhtxczprbx -3-6 n: nnnnnh -15-16 v: vvvvvrvvvvvvvvvvr -7-8 m: jphmmmmft -4-6 p: pppjpvp -1-4 g: dggkgg -1-2 p: zppsp -6-7 b: bbbbbbbbbbb -3-4 x: vxsv -9-13 t: pqtqttttkxtghv -10-19 v: vvvvvvvvvvvvvvvvvvxv -6-13 z: wnmzkzzqftzmc -6-13 l: vklgsrjrkjpzlqll -3-6 h: mwhllh -1-8 l: blllllltl -3-9 v: glxlzpffvgvmb -2-5 s: sssstss -3-9 t: tfptcrhtlzqxcv -9-10 t: ttttttttttjttt -9-14 h: ktwphtsnkmlzwd -3-5 z: zzznz -2-3 t: twtt -3-5 f: ffffsf -17-18 w: wwhwwwwwvwwwwwwwnsw -3-13 w: wwwwwwwvhwwwwpwww -7-8 n: pjnxnnnntpwnbsjnnz -2-4 v: vvvjhvv -2-9 d: dmddwcpnqdddszpb -3-4 q: qqrqqh -1-2 d: czdd -1-4 d: xsdzrms -1-3 n: znxnnn -5-7 r: rrrrnrzrr -2-5 c: ccccxcc -6-7 c: nccccdc -1-4 s: bslsrvgjdfsgf -10-11 j: jcjnjjpjlhh -8-12 k: lzrvvhtkkpbkfwjzcmz -10-13 b: bbbbbbbrsnbbmb -2-9 s: hswtzhlss -6-7 j: cpnjjjf -11-15 p: pgppqsfjcpbnmqp -4-6 k: kkkfwq -10-11 c: rccccccccccccc -5-14 d: bmfppdgvccmbdqpx -7-8 v: vqnvvqvvvvjvv -7-16 f: ffffffkfffffffffff -14-15 r: nbdlfkrbcrxbcts -13-14 v: vvfvvvvvzgvvvvmvv -1-12 l: glwdllllpllltll -3-9 x: mnxpljmxnm -4-5 h: rjqhbxnvkc -13-14 z: zzjzkzzlcbzpjzzz -2-6 p: tnpppp -8-12 n: kpjfjwpnwlzqhwbz -2-15 q: jqkjkbzcwvvqbxq -2-3 l: llllll -15-19 l: llllllllllfllllllll -1-3 p: pkzkpsvdptz -1-8 f: fffffffvfrf -1-11 j: prdqjlhjdvljjvjmhnm -10-16 v: stshngzvzvvvnffv -10-11 m: nmmtmqmmmmb -4-9 t: nzttkfcvrnd -18-20 t: bbttltktrgtntgtzhtct -4-6 p: pppglp -7-13 g: vgrccggpbvxgl -5-7 l: lqllvld -7-10 w: wswwwwqrww -7-8 c: cncczcmlcmcx -1-9 d: ggjtdddcqcmpd -4-7 q: vdkqwnqkbsdqxwwth -5-6 s: ptjwxsz -7-14 v: vvgbvtvvxvzvwvvc -4-8 h: tmjhhrndwlh -6-7 w: wwjvswf -2-9 v: vvvvvvvmv -2-4 c: hcgc -2-3 x: xxxx -6-15 h: vnbhwhhwtzztrlh -13-16 k: kkknkkkkkkkkkkkrkk -2-7 b: nbfxslbqblbbbbbbl -9-11 k: kkrqkzkkkvkshqkbkkhk -9-13 j: qjjjjjjvmrjjjjjjjj -7-15 h: zhqhhhjbhdhhmhfn -3-5 t: vtvstkkttftttt -7-8 h: hdhhhqhhnnfqwhzhdlsx -16-19 k: kkkkkkkkkkkkkkkfkkd -3-4 f: qfjsxfnsfq -13-14 t: ttjftttcttttptttt -8-9 f: gjmfffgrq -9-10 m: mmpmmljmmmmmm -9-10 k: skttkrjkkb -3-4 k: kkgk -1-6 h: vhhhhvhh -11-19 z: zzhzzzzzzzzvznzzzzgz -9-11 z: mzzzzzzlzzbz -7-16 c: tpcwtwcbljrnztwrsdd -13-15 b: hnrbfgqwqwqhpnc -2-4 g: fgsdg -2-3 k: kklkkqkhklkkqb -8-9 g: tgrfdbvgfzqvsf -3-12 j: jmjvwqrpsjvc -4-10 v: zvhjvtpjgvvd -5-6 p: fgplzd -9-13 r: csngrmrxrqvhdwfkvns -7-13 q: qqqqqqqqqqqqqqqqq -11-16 l: cvlxgkdmltldzsplzz -8-11 z: znmhzzcpbzz -13-14 x: xxxxxxxxxxxxxhxx -11-20 c: qmhcvthqctdtscfcjcck -14-15 l: lnllllslwjlllll -5-7 p: qppptqm -1-7 f: chffvqfrdffbcmqf -8-14 h: hhhbhhrshhphhl -16-19 j: tgsjqjwjjjbcjtjjjjj -3-4 p: jzppdrzpkgcxdljgm -5-6 z: zzzzgzzz -3-8 t: nvzdttst -4-6 x: qfkznxh -9-18 d: ddddddddzddddddddl -11-17 x: xcxrxxxxxqzrxxxxxxx -3-4 l: lmll -10-13 f: fffffffffffffff -7-9 v: mccgvfvlh -9-10 m: ddmlmtmgmmgmprmbmpqm -5-10 v: vvvvjvvvvvvvvvx -3-10 v: dwxdfjhxgsznhzqsqnd -1-3 k: xkrkkkkkkmp -2-5 c: dcrscf -1-10 p: ppwpwppppppljtppr -3-7 r: rrrrrrbrdr -5-9 t: ttttjtttttttttt -4-5 w: wwwxr -6-11 f: rtwzsffhxplnwrzpwwj -3-9 c: klcdzfchcnxcccnccpc -3-4 g: mgnlg -1-5 f: kffgpffft -3-4 l: qlsvllnl -2-5 w: vwwwwwwrf -11-12 n: qcgnnznfnmnt -6-13 d: rbbzghqwwmrdkssgn -1-3 x: hdxnqxtphtmk -10-13 w: xwwwxwcwrfcwm -9-10 p: tpppfxvbppppgpnvfzcv -8-13 h: nhqhqhthmpmnhlch -11-13 z: hjkftzgzlfhjjh -9-10 t: tttthttpzt -2-8 g: vghggdbfggrfggrgggrt -11-16 g: gjzgfnggggsgggzh -6-10 r: srmjvrrrlrrrhrl -2-11 d: ddddddddbddddd -5-6 j: jjfjjjj -8-11 s: ssssssssssqssmssss -4-5 v: vvvhp -5-7 c: ccqxvklbc -8-9 q: qnqfgqvqqqdwzqmcq -3-5 q: zbqqq -6-9 g: kkgzgwpvgt -1-14 h: hhhhhhhhhhhhhhh -9-10 w: swwwwwwwjq -1-13 j: xjwjjljjjjdjjjjmjj -11-13 m: smmhmmcmmmkmdmmmmm -15-17 p: ppppppppppppppsps diff --git a/day3/index.js b/day3/index.js new file mode 100644 index 0000000..efec294 --- /dev/null +++ b/day3/index.js @@ -0,0 +1,94 @@ +import { isNumeric } from "../helper.js"; + +export const part1 = ({ input }) => { + let result = 0; + const partNumbers = []; + const positions = findSymbolPositions({ input }); + input.forEach((row, rowIndex) => { + const numbers = findNumbersInRow({ row, rowIndex }); + + numbers.forEach((number) => { + const matches = findSymbolOnPosition({ + symbols: positions, + rowIndex, + startIndex: number.position - 1, + endIndex: number.position + number.number.toString().length, + }); + if (matches.length !== 0) { + partNumbers.push(number.number); + } + }); + }); + + result = partNumbers.reduce((a, b) => a + b, 0); + return result; +}; + +export const part2 = ({ input }) => { + let result = 0; + let partNumbers = []; + let gearValues = []; + + const symbols = findSymbolPositions({ input }); + input.forEach((row, rowIndex) => { + partNumbers = [...findNumbersInRow({ row, rowIndex }), ...partNumbers]; + }); + + symbols.forEach((symbol) => { + if (symbol.item === "*") { + const matches = findNumbersNextToSymbol({ + numbers: partNumbers, + symbolRow: symbol.rowIndex, + symbolPosition: symbol.index, + }); + if (matches.length === 2) { + gearValues.push(matches[0].number * matches[1].number); + } + } + }); + result = gearValues.reduce((a, b) => a + b, 0); + return result; +}; + +const findSymbolPositions = ({ input }) => { + const positions = []; + input.forEach((row, rowIndex) => { + const items = row.split(""); + items.forEach((item, index) => { + if (!isNumeric(item) && item !== ".") { + positions.push({ rowIndex, index, item }); + } + }); + }); + return positions; +}; + +const findNumbersInRow = ({ row, rowIndex }) => { + const regex = /\d+/g; + const matches = []; + let match; + + while ((match = regex.exec(row)) !== null) { + const number = match[0]; + const position = match.index; + matches.push({ number: parseInt(number), position, row: rowIndex, endPosition: position + number.length - 1 }); + } + + return matches; +}; + +const findSymbolOnPosition = ({ symbols, rowIndex, startIndex, endIndex }) => { + return symbols.filter( + (item) => item.rowIndex >= rowIndex - 1 && item.rowIndex <= rowIndex + 1 && item.index >= startIndex && item.index <= endIndex + ); +}; + +const findNumbersNextToSymbol = ({ numbers, symbolRow, symbolPosition }) => { + return numbers.filter( + (item) => + item.row >= symbolRow - 1 && + item.row <= symbolRow + 1 && + ((item.position >= symbolPosition - 1 && item.position <= symbolPosition + 1) || + (item.endPosition >= symbolPosition - 1 && item.endPosition <= symbolPosition + 1)) + ); +}; diff --git a/day3/input.txt b/day3/input.txt new file mode 100644 index 0000000..97faf0b --- /dev/null +++ b/day3/input.txt @@ -0,0 +1,140 @@ +......124..................418.......587......770...........672.................564............................438..........512......653.... +665/...*......................*599.....*.983......794*..140..*...........@..963*....................445........*......*.........709.....*... +.......246.....581......701..........108....%.532........../.73..699...927............................*....579.354.464..............298..86. +........................*.....@...............%........$............+.........167..................408............................$..*...... +....914......335.......513..245....106=...............974................749.....*.702.......589........803........*176..386.....631..340... +....*.......*...........................48...203@.............767......*..../.362...$......................*159.381......................... +..620.....430.....612.507.........365.....................335../........938.................154.........@....................682............ +.....................*...........*..................470.........................889...........*.....@.489.....453$.329..334............86... +..........324...............431..58..533-../..-...../......*405.................$.............47..474..............*......*.......930.*..... +............/.....*350....................400.502...............$...........168.......855.635....................258.......794...+.....846.. +........................560...72.945..............866..........783..328....*....116......*...........179..904........682$..........333...... +.....674...........152....*....*....*815.........*........$609.............737../................583*........*.84..............767*......... +..../......55@....+........645.914................987..................*..........972.........#.......80..750........588................=260 +.....................349&...................../.................754.407..203*720./.......207...14...............=88...+...767............... +.........*824.............890.......269....893..271*139..645....*...................233...%................428...........*.........79....... +..........................#............*.................@.../...316...844.............*........@439...287*......*974.....182............... +....*.....50.......671+.................267........634*....417............-.598.....531....891................331................358.....341 +.883.561..*....428.........../14...742...........@.....654.....809../716.......*456.....=....*........$..............................607.... +...........835..*..796*............*..............321......612*.......................299..203....962..431..........277.......40......$..... +......+591.....916.....294.........446..111......................237*77.....&........................-................*...150*....*......873 +....%..................................*.....................819............522.................922................738.........214.595..&... +...552.........*...............+545.....627...........601......*..801..............867.....954....*.984.....752..........*830............... +............276...939.............................979....*.........*........866*.....*.......*..963.-.................172................... +278................*......@..........52........51*....851..766@..515.949=.......736...456...107............796.@668..................#...... +...*...431.................616..............................................79..................651.806.....%.............554.........740... +.969...-............................-..........721.......555.657....+.........*....#....704........*.................556...*....196......... +................*228..........312.201.....490...%.........*..#...815........896..417.....=....890.....274....884.683*.......327...*......... +......@......742.............*........393*....=........715..............535...................*.........................529.....741.....#... +.......386........244......196...............815...........869....+580...*...................71........654...454..346=.$.............909.... +....................................................265...$.............738..401...984...........265.....*......*...............-........... +.......=.....184....148....14.........685...990..................80..=....../........$.......511....%.....424..400......184..551............ +.....71......*.......@............812.........&..$.....573*613.....*.677.......#.......299..&.......................933..................... +...=.......142...917...-989....76*....230...*....105.............920.....+......371.......*............660..692.........553*........%....... +341................&.....................=.29.............643.82......*...714............222....934......*....@.............178..581..+..... +...............874...129.......................739*971.......*.......176.............3.@...........*..219..40..........#.............168.... +.....179..............*...741.......524...................................757.=633..*...136......63........*..........399................... +.......*....315....307....*.....%..*.............718......371....=....654*..........89...................194........................+.23.... +.....737.........&........540.253...80...273......*.........&...773............492.................722........113....970..=195....702....... +..............869..........................*.539...434...............393*933......*........679.874..%......=....*........................... +............................$....148......43...*............@....................67.876........=......./..388..920......423.........-....... +..118*773.142....%565.......397....*.........352..#..........217......................*....865......257..................*........421.415... +............&.........898.............607..........897...631.................787...840.......*..............684.........34.359.........*.... +........995....235.....@.........#.......*.932*.............*73...940..997..#..........&.&...942...$.727..........115.........*122....380... +................-................131...........265...827...........*....*............797.490.....845..*..........#....+823.................. +............96.......................383.......................53.292....19...536......................42..668..................579......666 +...-..487............680..&...*45...&........801.............*.*.................-........374.....................128..109.......%....*..... +.611.+..............*.....151................=......739....622..572................103...........683.....245..748*....*............298.67... +........*735......911...................562........@.........................458.....*...753........................275.362*................ +.....683......702.....736.230.....457.........................13................*..126...........458........................890.........992. +...............*......*..........*.......499........10.........+...227.227...542..........................167....661....................*... +.............691.7....135.62..157..570..*....304......*...........*......*................$589....#946....*.........*............132....190. +........687.......*.........*............768..-...453..643.........844....706...%......................509........767......*................ +...........*....485......859...........*.........................................92...268.........193.....................385.....991*722... +...-.....18..................217......853................................28..............*........@.......+......302........................ +...103......60=..*352...........*916........351.....347..=..452.810....................304..........539.346.......*....................*.... +......................610..........................=....990.....=...819....*496..797.................*........946..44..................261.. +.......630.............*........882.........................173....*...............*....903....44.....318.212.@.......-..................... +.......-......-...........@..=.....*841.....812.......515......*....713....+.....566....*...................*......344..297....356.430..%... +.........*482..453.......279.554./............#..320..*.....................671......873........&...637$.....413........@.........*.....906. +....263...........................861......*....*.....908......365....123.......494.............134.................808.......*.....*....... +..........465.....520%.....................432.76..........160........*......................26.......218....14.......*......598.874.844.... +...417......%.............138.....................$..............84..............272...573.....*.296.*................585................... +...*................596...&......................783.....992..........*....982.....*.........857..*...314...797..265........*....*..547.#... +....260........75....*...........389....616=.........5.....*.....695..427..*....780....-425......872..........*...*.......49....599.....19.. +..............+.......389...........*33.........596.......600......*......67......................................567....................... +...802............................$.....302....*.....-93........434............$........554../339..............................277.......... +.....*....................$.....822.....*.....89...........233..........602.....911.....#..........958............475......773*.........%989 +..849.............228..868..217......679.......................99*...../............................*....................................... +.........253.........*......*....................643..............796......-200...355..469.........174......=........174....279.638......... +295*22..*............664...462.-238...................&765.........................*........................241..............$.......%...... +.......937.....25....................422.264.................244...........628...340..................106.........................551.....82 +897*.........../..60.......361.......*......#.....164.........*.......804*....%..........670*194........#.......#..........83............... +....754............*.................51..47.......*.........487...585.....202........838..................28...734...*457..............427.. +............155...705......................*....912.....887..........................*....*875...........*........................&......... +..952.621......*.............+983...........832.....783....@.......432#...+........530.223.............456......462...257*100......763...... +..........=..905........................892...............................262..85..........#..................-../.....................671.. +.........994...............476.............%.665...524...53*........939*........*..........703..497.........186............=.567........*... +154...............$412......&..........-.....&.....-........41.109......282......676...........%....&80.@...............439...*.....@...997. +........+130..................296.....308................@.....*...902..................................77....833.....%.....932.102.48...... +................407%.%685......*..........927.=222........426.450...*........12.....82...../..570................*...798..........*......... +..825.....................923.429......#..*........#630...........409..314*..........*...569.....*....273..648...961.............279........ +...=..827=..........293.....#.........875.401.............457.433..........690.....600............929......*..............*245.......93..94. +.............557.......*.......................52........@..........284.......................450......................986..........*....... +........................463.....583..708...........................+........101....834.445.......*.....336...................694...333...... +....556....923................./......*..433.....182....181.........................*..*......492..598.*............260.....*............... +......*.....*....430...............960....*...+..&.......*..=96.....628.282...@355.833.883...........*..468...420...........288............. +...140...682......*..945...150............7.654....+83.941...........*......@................#....7.780.......*......922.........334........ +.............365..49.......$...590............................608.........503......./......36.....*.......74...340.....*.................... +..........@..*.......870.-.....*...284*556................288..*...@.............$.526............587....*...........387.................... +.......188....626.$......372.733.............................*..97.466.....776.541......................413.950..........696.162............ +...../.............755...........62......99...............224...............-.........333......................*..337.....*....#......%233.. +442..7.......=...................#...........875*705.548..............963...............*......180.....581...350.....*....513............... +..............377....................................*.........#......*.........291......981..*...........*..........74..............&...... +......895.........644...................613.......540...........756.............%............390.263....754........#.....713-.....450....... +...85*....$.............297......%.........*..........156............974./870....................*...........12....426.................483.. +.......774............#..*.....872.............361......-...196..................849...........419............*.........221....667.......... +...................961....604...........644....*...............*........../927......*......503................124........-......../...238... +....370.............................531*......174.693.........349..................495.......*....925....................................... +.....+...104....582...602*604...123..................*..896..........71@.....................767...............573@....656......%........... +140........*...@...............*.........-........592..*....................806..692.....511...............755..........*......917...636.... +..........905.......462.....+...655......860..150.....800..903.......8*920..........*867.@...................=..........269................. +....582..................217........842.........*...........*..................912...............551...615.......-..........343*129....+.... +....*........................./.....................752..347...275...127.@........*.....804.....#....+.#.........252...845............671... +..862..........38..........293....429...@............*.......*...#.....*..245....330.......*18.....182.....$538..........&..725............. +.................=.............46*....696.............581.664.........608...........................................%.......=............... +...*724.....977.............................../................565...............#15...............................782.........359....$..... +529.....373.*............198.983.....980..559..592...100.579......*889..145..839..............790.....496....193......................545... +.........*..560..769.......*.....775...*.............*....@..104................*...%..820.....*......*.....*.............245...160......... +.....338............@......28.......*...725.687....761......%...............%..423.773..*.....315....765..69.................*...*.......... +.851*.....619...333..............907..........*.........512....536..........98.........434....................48.613.973..941...554..751.... +....................*564....122.............608........$.........-.........................48.........435.......*.......*............&...... +...........165*967...........-..799.186.938......@.615...317........................630...........551*................345................... +....968............281.546.......*.....*.......225.......*...162....372.........&85...+...177@...........719..55................360*........ +.......*.......%.......#.......226....................341.....*......*.............................341.........*...........989&.....321..618 +....884..554.163...%...............*423.233.................653...557....$....910...................*...........109....772.................. +..................854......167..560......@.....311...958..............492.....*.....*877.........@...911..797%...........*.................. +....852.815.....9.................................*....#...../..941.........960..494........56.375.....................50..+......=...106... +....*......*461.&.......739....$..........=.$562.276.......408.....=.....................=...%.................769.........893..463..*...... +.133..................-........797.....313...........................................20.214.....357..776.471......*687.@.............527.... +.......14........899...845..........*..........+.....46........634........914.....84../...............*.....*780.......878..%36.435......... +542.....*...........$........*833...257..329-.147...........+........150..*......*.......907...........429.........................*....#... +.....517..799.44@.........230..........................477.579...........836......839.....-.....................964.704.............194..310 +298.......*....................307..800......346.65.....*..........414........@.......619........&442.............*..*...................... +...........510...+.....837.237*.........../.....*.....270.....818$..+..........27....*.................163.....140....647....764.163........ +................181...*..........536#....335......................................610..170...............*.-....................*.......&... +.......................832........................#........&........611.........................&55...428..472....586......111........768... +.......763.....................................461.........381......-............566..814.....*.....................*........./............8 +.............+.......................318............695............................=..%....323.756............711..663............827....... +...........526....=....675...353&.....@..982#......*..................+.62...880+..................631.......$......................-.118... +..................655....*....................795..30...922*.......978...+.&.........539...........-....719.................599............. +......2...574%..................#.698...475.....*...........652./...........464.163$...*..338*966.........................../.....534..386.. +......*.......................404..#............747...703........231...-...............................................................*.... +.......906.................................&575.........&....457.......633...395..761...355.#780....3+......799+...............496...264.... +311............967.682............%.838...........253..........@..551.......@....*.....*.............................487.........*.......... +..........@.......*......925....376....&...419......=.............*..............20..952.111/....648.&........748................834..706... +..443....940.............*....................*..........................820.684...................@.755........*........106.283............ +..............397.........803...84............627..........704.983..........*................522............................*....541........ +.....32....$.....#...643*..............116........./905......*..../...........311......811$.*........*890..........924..670........=....882. +......*.....81.....*.....636.......317...*...................899.............*....*698............626....................-..+..@.......*.... +.......877......256.714...................825.........458....................869..............................54............28.823..110..... \ No newline at end of file diff --git a/day3/sample.txt b/day3/sample.txt new file mode 100644 index 0000000..624ea4f --- /dev/null +++ b/day3/sample.txt @@ -0,0 +1,10 @@ +467..114.. +...*...... +..35..633. +......#... +617*...... +.....+.58. +..592..... +......755. +...$.*.... +.664.598.. \ No newline at end of file diff --git a/day4/index.js b/day4/index.js new file mode 100644 index 0000000..66f2869 --- /dev/null +++ b/day4/index.js @@ -0,0 +1,37 @@ +import { isNumeric } from "../helper.js"; + +export const part1 = ({ input }) => { + let result = 0; + input.forEach((row) => { + const { have, winning } = getNumbers({ row }); + const matches = winning.filter((n) => have.includes(n)); + result += matches.length > 0 ? Math.pow(2, matches.length - 1) : 0; + }); + return result; +}; + +export const part2 = ({ input }) => { + let result = 0; + let cards = Array(input.length).fill(1); + + for (let i = 0; i < input.length; i++) { + const { have, winning } = getNumbers({ row: input[i] }); + const matches = winning.filter((n) => have.includes(n)); + + if (matches.length > 0) { + for (let j = 1; j <= matches.length; j++) { + if (cards[i + j]) cards[i + j] += cards[i]; + } + } + } + result = cards.reduce((a, b) => a + b, 0); + + return result; +}; + +const getNumbers = ({ row }) => { + const matches = row.match(/: (.+?) \| (.+)/); + const winning = matches[1].match(/\d+/g); + const have = matches[2].match(/\d+/g); + return { winning, have }; +}; diff --git a/day4/input.txt b/day4/input.txt new file mode 100644 index 0000000..6f6e972 --- /dev/null +++ b/day4/input.txt @@ -0,0 +1,201 @@ +Card 1: 58 96 35 20 93 34 10 27 37 30 | 99 70 93 11 63 41 37 29 7 28 34 10 40 96 38 35 27 30 20 21 4 51 58 39 56 +Card 2: 64 84 57 46 53 86 90 99 59 70 | 99 59 30 83 84 70 31 57 6 29 18 82 15 88 86 53 51 64 32 47 44 46 80 39 90 +Card 3: 55 87 51 18 86 5 66 83 92 95 | 73 68 49 57 29 14 41 42 65 10 84 34 67 44 6 48 61 13 28 38 52 19 78 64 11 +Card 4: 52 21 59 78 18 42 46 91 31 10 | 48 83 13 68 42 72 4 10 6 36 63 81 21 94 8 3 78 53 2 47 62 77 56 97 7 +Card 5: 8 79 31 1 26 57 90 62 93 10 | 26 70 73 6 16 15 93 57 34 56 87 31 10 45 1 22 79 77 90 47 42 58 41 62 8 +Card 6: 90 75 24 69 81 93 39 38 96 33 | 2 78 68 31 99 35 49 66 36 84 54 27 43 80 50 3 22 74 60 98 57 83 13 82 91 +Card 7: 74 86 51 70 28 54 6 34 48 53 | 51 82 34 74 40 24 42 66 20 61 84 15 89 62 69 48 95 31 93 52 76 12 90 75 99 +Card 8: 54 44 69 6 51 24 84 39 20 99 | 89 93 96 85 18 94 15 87 72 67 5 52 45 43 55 65 14 47 30 61 82 41 76 29 38 +Card 9: 26 44 60 20 11 15 16 95 18 47 | 71 56 10 57 65 90 32 30 13 42 19 55 29 12 89 91 2 67 79 58 99 4 81 41 69 +Card 10: 68 65 79 3 44 55 12 71 47 84 | 47 65 93 4 71 23 17 30 59 85 3 28 95 36 88 12 7 97 68 62 84 21 79 61 44 +Card 11: 96 57 36 49 80 73 3 60 11 53 | 83 78 6 39 42 4 96 84 3 80 95 60 97 57 49 66 27 93 31 45 86 90 50 9 73 +Card 12: 85 69 14 3 54 56 61 43 77 80 | 84 8 53 72 9 24 52 88 40 2 95 31 34 90 61 70 89 97 58 56 14 65 98 38 3 +Card 13: 69 29 79 83 89 94 44 68 15 35 | 37 39 29 55 2 82 96 42 73 32 31 79 8 53 88 40 44 49 69 94 87 62 41 81 89 +Card 14: 27 40 19 34 91 84 98 49 21 68 | 58 94 2 1 55 53 52 44 98 8 75 46 50 79 9 56 43 67 10 3 11 19 69 95 17 +Card 15: 3 47 44 77 95 25 60 65 93 53 | 15 40 3 93 33 44 60 19 62 90 35 50 30 65 10 94 38 47 1 29 56 46 99 91 42 +Card 16: 96 27 10 19 93 22 87 53 97 1 | 52 36 77 72 13 61 48 22 94 5 76 51 62 4 41 81 11 17 79 64 40 24 54 23 33 +Card 17: 58 74 26 97 13 61 88 82 89 22 | 9 90 82 88 61 80 3 95 94 81 75 34 71 98 89 74 97 14 47 22 64 52 73 45 35 +Card 18: 29 90 8 16 69 48 40 21 18 9 | 79 26 84 12 40 36 85 19 69 25 21 9 13 16 83 4 22 90 54 97 17 2 89 73 50 +Card 19: 10 66 52 31 72 16 62 1 58 5 | 59 36 75 11 73 92 91 12 37 9 40 52 85 53 24 69 57 82 99 35 27 34 3 2 77 +Card 20: 96 5 9 50 28 34 80 2 36 43 | 90 77 12 17 75 24 32 67 28 22 73 23 68 84 6 25 96 95 85 9 11 36 49 39 98 +Card 21: 84 16 48 91 50 1 94 45 8 88 | 45 96 15 85 62 81 77 61 92 22 76 52 59 36 73 80 64 72 89 79 93 82 83 60 67 +Card 22: 21 46 26 27 28 3 8 44 32 24 | 76 6 90 80 26 11 83 2 18 81 93 95 53 85 31 78 66 35 5 1 56 65 89 14 94 +Card 23: 58 52 2 38 5 63 8 20 99 73 | 23 29 97 91 43 1 37 95 89 80 94 41 22 72 77 62 85 4 24 16 10 39 88 56 19 +Card 24: 36 94 57 12 16 64 4 62 39 41 | 19 6 72 9 17 46 68 34 28 80 59 74 18 13 76 77 43 82 48 58 5 52 30 25 23 +Card 25: 19 14 23 16 7 35 57 40 83 80 | 80 85 7 68 91 22 40 49 35 87 83 93 19 57 23 84 14 16 18 51 77 69 28 54 56 +Card 26: 25 58 34 14 13 30 56 22 97 6 | 38 13 97 24 94 88 30 77 14 34 73 6 44 17 26 57 47 22 31 85 58 56 25 96 10 +Card 27: 41 64 75 24 62 67 45 99 73 27 | 33 9 14 5 32 50 54 20 46 4 45 71 26 59 58 22 7 30 96 34 48 37 23 15 85 +Card 28: 89 90 33 58 59 69 49 72 2 32 | 79 43 28 97 72 92 58 59 31 33 44 89 71 90 11 80 51 2 30 32 69 82 77 49 95 +Card 29: 15 6 27 80 12 2 36 34 64 58 | 15 38 53 34 32 47 64 16 60 2 3 14 62 80 79 27 12 36 6 85 58 33 69 24 57 +Card 30: 54 63 65 76 87 6 47 89 10 79 | 87 73 12 10 92 86 39 76 79 6 97 67 84 47 65 54 22 51 19 31 9 37 89 82 63 +Card 31: 23 96 48 30 75 9 72 11 78 62 | 75 24 23 1 14 72 54 2 47 95 48 18 50 12 94 78 9 96 34 30 11 98 46 62 66 +Card 32: 41 27 4 60 29 24 82 31 17 26 | 4 40 59 27 70 37 60 77 31 46 99 43 61 67 45 5 73 35 30 33 41 17 24 29 76 +Card 33: 90 49 23 13 57 1 72 5 20 81 | 61 20 51 83 54 85 8 23 17 7 1 49 39 11 92 27 90 76 10 25 57 93 13 81 66 +Card 34: 12 16 36 14 17 73 97 74 83 11 | 76 91 97 26 36 12 10 73 85 7 17 14 25 29 80 16 74 32 60 94 83 11 67 37 35 +Card 35: 92 80 27 26 61 91 28 66 15 76 | 19 64 36 42 70 77 27 91 29 66 61 18 58 15 32 8 68 67 92 80 93 76 28 26 48 +Card 36: 70 49 5 86 84 71 72 40 22 47 | 98 68 10 75 88 16 61 17 21 91 14 48 44 73 81 2 82 83 80 93 87 59 92 41 34 +Card 37: 18 9 71 88 72 74 33 50 4 40 | 96 72 41 21 40 33 18 73 91 53 71 74 46 61 80 12 88 36 70 26 66 69 39 38 9 +Card 38: 52 91 3 1 58 80 78 15 99 25 | 70 55 27 59 62 56 78 97 91 52 18 2 23 80 9 8 89 51 19 46 10 71 25 49 99 +Card 39: 85 9 86 88 36 60 90 56 77 16 | 34 26 85 46 86 2 28 31 16 22 36 83 60 37 74 81 19 27 7 17 91 49 56 3 47 +Card 40: 38 12 23 15 31 48 24 76 82 54 | 44 30 45 97 3 20 38 52 43 53 47 8 71 92 12 41 79 42 28 25 65 59 83 89 24 +Card 41: 78 11 68 8 89 13 26 93 65 54 | 84 22 71 3 53 4 15 9 81 96 26 6 40 56 95 75 30 62 65 13 33 78 41 66 44 +Card 42: 41 90 34 15 47 56 39 59 21 53 | 11 87 9 37 47 78 5 61 93 89 58 81 46 48 4 42 40 33 67 27 97 43 55 22 26 +Card 43: 42 99 37 62 40 79 15 55 76 82 | 91 21 53 1 54 63 4 51 28 59 71 61 18 66 23 10 25 38 6 20 30 87 44 11 14 +Card 44: 59 19 4 75 62 55 38 82 60 22 | 25 89 80 19 87 97 40 53 98 10 73 77 81 76 48 83 44 69 34 36 24 42 27 78 88 +Card 45: 19 76 23 87 25 13 67 52 3 60 | 92 1 96 22 26 42 54 24 57 41 49 33 72 17 77 14 78 62 11 74 73 4 47 99 59 +Card 46: 80 48 27 98 36 29 28 83 82 39 | 2 74 47 43 27 48 82 91 28 99 9 29 36 80 66 4 46 25 83 20 37 72 49 39 98 +Card 47: 39 12 2 66 78 8 58 98 95 15 | 63 78 90 49 83 72 66 56 82 92 20 21 11 89 17 51 5 55 39 48 97 19 33 22 12 +Card 48: 91 29 16 88 11 46 75 55 3 51 | 99 71 4 26 16 2 98 44 32 1 46 28 36 67 14 49 93 72 83 35 65 8 27 96 74 +Card 49: 71 93 41 5 84 26 1 33 2 94 | 2 41 54 74 33 5 13 91 1 19 65 14 34 58 84 94 23 61 85 26 20 11 71 93 22 +Card 50: 9 69 66 54 4 18 56 15 80 63 | 35 59 38 62 54 16 8 69 89 74 71 93 64 15 80 39 13 84 9 28 79 27 18 45 75 +Card 51: 83 65 33 4 48 7 68 77 42 81 | 84 4 65 48 15 77 79 92 42 7 68 96 33 85 17 87 81 58 54 83 36 75 18 94 97 +Card 52: 86 34 54 12 13 67 61 57 41 4 | 91 35 27 3 68 39 12 30 65 9 50 46 66 80 20 77 29 45 72 98 19 10 55 47 73 +Card 53: 54 98 74 15 77 79 13 41 56 33 | 18 87 53 94 98 54 92 17 72 32 10 46 47 69 6 35 63 61 89 52 55 77 49 14 60 +Card 54: 55 76 46 69 22 60 13 90 86 48 | 90 57 63 23 39 47 34 65 97 6 93 95 13 48 60 22 86 96 33 92 94 29 56 72 18 +Card 55: 90 10 36 50 2 87 48 25 56 3 | 36 16 40 26 74 57 56 6 67 3 10 2 87 25 48 69 49 61 65 68 42 91 90 50 72 +Card 56: 79 48 63 72 24 98 64 80 42 87 | 98 63 15 40 28 39 85 81 60 48 64 92 80 82 74 91 72 41 23 99 17 93 42 59 87 +Card 57: 17 95 91 39 51 56 16 14 54 33 | 20 65 34 80 27 13 1 43 59 26 76 54 41 85 14 83 17 39 23 16 12 37 49 44 24 +Card 58: 50 9 39 92 89 62 74 56 73 61 | 78 92 68 31 13 28 83 61 8 14 56 62 6 16 50 39 24 9 58 1 17 89 48 15 12 +Card 59: 6 92 15 50 99 29 3 72 12 95 | 73 72 80 92 88 19 55 12 53 93 91 45 26 15 99 43 84 62 59 49 6 64 77 3 16 +Card 60: 14 93 76 15 7 90 39 30 83 32 | 83 35 69 40 60 77 73 75 36 27 94 80 90 1 56 99 93 13 37 45 22 26 31 20 70 +Card 61: 50 64 24 26 72 8 33 13 22 27 | 45 60 37 19 55 95 76 52 4 9 75 44 78 20 53 41 69 11 47 36 2 48 74 94 21 +Card 62: 55 87 6 12 83 97 11 94 56 19 | 4 71 56 25 88 50 55 42 10 28 81 60 59 22 44 49 86 66 94 31 62 84 57 90 51 +Card 63: 89 13 38 94 61 8 79 1 11 80 | 5 55 56 13 84 39 54 32 79 74 58 96 82 53 21 91 64 42 41 94 44 97 95 28 14 +Card 64: 39 73 72 12 74 58 57 50 25 24 | 1 49 3 46 89 26 78 24 28 21 54 64 86 88 30 91 43 15 98 23 99 12 22 79 33 +Card 65: 58 65 74 21 7 3 95 71 50 41 | 3 53 28 78 18 65 52 89 33 30 87 13 62 72 88 37 71 26 27 19 46 98 84 76 4 +Card 66: 27 73 68 71 55 33 88 30 56 87 | 50 74 97 18 34 5 65 66 93 31 57 32 69 38 28 60 81 43 87 98 53 86 59 49 14 +Card 67: 9 50 66 57 33 76 65 84 44 88 | 34 85 27 32 12 77 63 3 95 93 4 10 70 38 49 19 41 83 14 72 16 5 40 57 24 +Card 68: 71 27 65 58 38 62 73 23 77 57 | 51 56 61 78 41 68 22 2 20 64 6 24 45 5 72 79 13 67 85 7 50 48 93 80 26 +Card 69: 36 60 4 27 41 67 61 88 50 83 | 67 45 29 66 36 59 95 60 41 28 43 37 61 4 84 88 23 49 92 65 89 27 50 83 58 +Card 70: 34 37 95 65 11 29 98 15 55 68 | 13 58 34 52 29 46 72 25 68 5 7 87 42 51 61 98 75 15 65 33 95 11 83 55 60 +Card 71: 13 67 2 41 43 52 47 6 54 51 | 2 81 22 30 13 52 5 10 67 50 86 54 3 51 92 15 37 79 43 11 41 6 69 47 25 +Card 72: 51 72 65 50 55 80 48 87 13 10 | 28 5 41 51 42 45 87 98 35 64 93 72 65 55 50 88 13 74 48 63 80 10 34 86 40 +Card 73: 98 36 68 48 17 75 64 11 70 61 | 17 50 8 89 93 3 65 14 85 33 23 55 42 40 63 84 1 62 20 86 36 51 80 16 77 +Card 74: 75 10 74 42 71 63 14 2 12 96 | 33 7 65 96 38 6 17 34 18 40 71 61 95 14 27 46 2 91 66 58 8 19 31 16 25 +Card 75: 88 90 82 53 34 4 28 57 2 51 | 2 16 46 87 34 51 88 90 3 79 28 57 20 80 44 22 42 12 82 1 53 4 56 83 99 +Card 76: 75 48 5 98 51 7 34 67 66 32 | 93 92 75 43 1 98 71 19 13 40 29 85 67 66 12 25 83 39 48 8 7 5 31 65 33 +Card 77: 87 73 2 20 57 7 99 23 4 81 | 3 10 65 56 26 84 34 78 17 66 44 72 69 76 30 95 5 38 28 8 70 22 99 82 54 +Card 78: 2 48 95 8 80 41 26 96 47 50 | 1 5 21 24 91 29 22 47 98 57 82 42 72 94 62 90 2 95 49 36 6 71 27 70 33 +Card 79: 32 35 6 27 72 8 81 44 28 43 | 59 79 54 18 51 82 25 61 83 37 12 94 41 74 69 16 73 65 1 26 9 33 29 34 66 +Card 80: 46 43 77 74 73 26 84 50 86 24 | 6 29 89 70 16 3 98 92 17 27 79 86 31 93 85 41 96 91 77 48 14 66 18 54 99 +Card 81: 69 60 90 30 65 28 96 97 41 38 | 40 3 44 62 94 97 57 60 9 85 17 88 28 96 22 77 72 36 30 52 83 95 73 48 80 +Card 82: 27 47 86 26 46 44 59 63 31 58 | 51 13 11 50 35 89 8 78 54 82 67 64 15 83 73 74 57 4 76 29 43 90 91 37 22 +Card 83: 84 6 1 64 33 37 68 83 72 90 | 41 69 59 91 46 40 22 5 51 27 76 45 32 43 37 3 10 85 26 81 87 56 25 67 55 +Card 84: 61 83 50 49 91 12 98 38 6 78 | 93 73 96 62 70 39 59 5 48 18 40 63 90 22 61 46 50 66 91 95 88 71 76 87 29 +Card 85: 3 60 82 33 22 43 9 98 50 89 | 48 56 15 77 25 92 6 41 84 2 49 29 61 57 51 64 96 36 7 22 31 32 28 30 59 +Card 86: 48 22 41 64 65 16 25 36 29 76 | 86 5 19 89 36 60 27 1 11 67 98 73 35 75 61 21 92 91 93 66 47 39 87 68 52 +Card 87: 68 42 18 51 79 37 9 34 8 85 | 12 7 19 30 91 84 29 53 73 65 48 94 17 22 4 32 33 15 93 75 38 31 41 86 67 +Card 88: 50 35 98 64 91 37 80 75 39 8 | 37 13 35 24 64 91 75 4 63 45 98 56 85 8 1 29 43 97 65 50 80 74 25 32 39 +Card 89: 55 87 4 74 33 2 61 37 94 57 | 37 25 55 48 2 40 5 38 94 85 87 4 7 51 57 75 43 61 34 67 17 74 24 10 33 +Card 90: 76 98 38 16 60 19 93 26 48 43 | 72 8 26 45 98 61 67 16 42 43 29 76 93 50 79 38 27 15 19 54 99 60 3 88 48 +Card 91: 64 67 7 18 71 96 45 89 39 2 | 71 21 98 87 39 19 57 45 86 7 49 2 67 20 96 74 90 64 18 17 89 99 23 59 16 +Card 92: 68 66 33 78 22 62 39 31 37 5 | 95 40 33 37 5 22 66 78 10 68 63 43 90 31 46 8 62 32 98 73 39 21 45 13 20 +Card 93: 21 25 2 91 58 37 51 60 12 74 | 47 40 51 66 77 63 84 68 2 4 60 75 91 21 22 35 32 80 74 37 58 20 12 14 27 +Card 94: 81 48 43 59 86 85 2 92 27 35 | 34 84 11 6 25 1 96 24 30 8 21 33 74 57 70 91 66 20 7 75 36 73 53 87 62 +Card 95: 15 2 41 54 12 45 3 56 77 9 | 12 60 7 97 49 96 99 32 24 63 16 62 68 88 26 43 54 20 27 33 47 19 58 15 75 +Card 96: 90 47 53 86 39 54 7 82 65 22 | 84 62 70 82 78 65 53 86 30 73 57 47 72 54 39 11 35 83 22 40 28 7 21 90 63 +Card 97: 17 25 87 43 20 84 75 78 6 53 | 75 6 64 90 87 61 11 31 36 60 38 78 46 27 82 72 16 95 57 17 30 53 94 77 3 +Card 98: 45 18 60 22 16 91 39 27 38 88 | 18 88 92 49 79 10 38 98 35 99 89 91 23 32 9 39 1 64 48 11 22 15 66 82 21 +Card 99: 6 42 69 91 94 38 87 11 97 26 | 6 71 11 69 16 97 49 73 45 48 38 87 42 2 67 26 89 95 81 30 1 91 20 10 66 +Card 100: 57 7 39 52 99 68 48 24 2 16 | 1 43 77 38 25 18 41 73 26 12 90 3 95 54 22 72 65 83 11 32 37 85 14 71 29 +Card 101: 48 71 81 27 52 26 75 95 19 54 | 19 59 90 24 17 56 34 39 49 88 80 75 10 58 86 55 26 67 89 85 65 40 30 81 6 +Card 102: 35 62 57 40 79 63 37 33 60 17 | 37 35 33 97 79 75 7 19 59 67 23 63 41 17 85 58 42 38 53 36 83 60 62 76 95 +Card 103: 91 18 51 5 41 61 26 94 47 85 | 26 58 65 41 96 83 30 63 78 87 90 4 53 95 6 8 98 36 82 76 92 34 28 94 56 +Card 104: 45 38 79 42 74 18 16 61 65 89 | 58 5 84 72 51 22 52 56 64 11 23 38 16 93 24 25 29 66 41 35 77 20 95 17 1 +Card 105: 9 97 56 51 55 62 19 75 83 47 | 58 15 96 43 24 9 47 80 95 71 62 29 72 39 40 19 61 52 8 32 88 69 27 70 86 +Card 106: 82 26 96 33 35 50 19 78 64 91 | 9 17 70 96 89 91 4 52 75 56 64 14 63 32 50 73 7 81 46 10 53 42 99 95 26 +Card 107: 66 58 63 7 95 46 42 97 67 59 | 96 23 86 7 58 61 14 17 93 45 39 60 28 32 15 46 55 35 2 44 22 27 78 94 68 +Card 108: 48 3 54 58 30 47 71 74 28 37 | 44 62 60 16 97 71 23 35 49 24 93 7 65 87 19 99 89 28 34 45 90 70 64 20 66 +Card 109: 3 90 39 83 16 47 44 1 28 65 | 38 48 24 37 96 81 60 54 6 58 68 23 21 35 26 45 98 85 40 63 64 80 29 97 34 +Card 110: 3 12 59 28 93 26 92 52 38 64 | 65 36 5 49 72 86 6 33 84 73 98 89 47 61 57 14 32 44 10 97 69 40 99 7 51 +Card 111: 3 2 30 72 16 80 46 52 51 64 | 76 86 57 44 89 26 96 10 1 23 59 32 60 41 77 73 68 29 78 75 62 28 6 99 71 +Card 112: 84 34 17 40 47 44 33 99 65 79 | 65 74 97 55 33 13 52 34 47 40 17 56 6 96 76 8 59 51 99 84 18 48 79 44 24 +Card 113: 13 92 5 86 85 36 74 28 82 18 | 48 36 5 37 46 95 90 82 19 68 10 8 11 18 80 69 63 86 85 28 92 64 71 32 94 +Card 114: 96 50 90 97 11 42 79 78 56 26 | 78 50 27 47 96 97 62 42 26 86 84 72 79 20 11 43 8 64 87 95 56 68 90 67 52 +Card 115: 29 36 84 82 38 61 86 73 25 45 | 37 58 28 45 6 36 29 43 95 92 56 73 44 83 25 97 61 82 84 71 69 38 77 86 42 +Card 116: 97 19 96 10 44 26 81 79 7 89 | 39 55 63 4 94 24 29 12 65 84 68 31 75 23 15 71 54 82 56 42 5 53 96 40 51 +Card 117: 74 94 58 42 30 40 97 33 73 93 | 62 59 9 41 71 98 97 19 32 24 40 1 56 14 74 87 52 92 61 90 37 45 20 80 31 +Card 118: 96 45 27 88 2 82 87 99 39 17 | 53 36 44 55 21 88 33 74 26 22 61 46 18 43 20 68 54 49 87 67 35 73 3 63 1 +Card 119: 80 19 2 6 68 32 23 22 99 28 | 20 40 66 38 87 59 41 55 54 57 21 12 11 45 65 16 24 3 63 68 73 98 99 14 17 +Card 120: 84 92 65 58 80 55 2 72 78 75 | 66 64 44 88 1 41 59 13 29 52 30 71 90 21 76 87 73 70 25 61 26 69 32 81 95 +Card 121: 52 32 92 91 42 8 15 19 1 30 | 89 92 96 46 25 24 48 90 59 83 15 75 28 57 61 39 43 42 84 95 45 73 41 98 67 +Card 122: 70 89 60 43 1 58 49 46 28 45 | 74 62 66 13 67 95 55 10 9 70 54 84 29 31 8 96 59 81 27 3 63 12 1 82 87 +Card 123: 41 51 96 76 48 54 4 71 45 84 | 68 66 2 4 78 15 1 62 75 94 59 7 12 28 60 39 16 42 61 8 84 89 46 95 35 +Card 124: 48 61 35 81 94 73 98 46 53 85 | 55 2 40 3 84 4 11 88 77 62 79 39 85 27 36 82 33 93 29 47 67 50 12 91 19 +Card 125: 63 44 28 58 5 26 85 93 50 76 | 39 10 25 30 2 3 42 60 94 83 57 9 75 13 67 90 36 81 18 72 23 37 48 19 69 +Card 126: 41 28 15 87 88 50 57 27 78 30 | 3 24 89 91 47 40 11 83 76 33 53 74 9 42 43 66 70 17 99 29 75 19 98 90 64 +Card 127: 77 24 27 2 59 54 6 61 65 12 | 34 42 68 15 70 75 2 27 61 40 6 13 24 54 12 59 44 65 22 88 86 77 3 79 64 +Card 128: 3 15 55 7 80 69 64 13 77 33 | 34 50 3 17 88 66 79 59 38 1 41 11 55 8 7 80 68 25 16 46 61 19 13 74 33 +Card 129: 26 19 39 29 4 6 55 49 67 12 | 72 53 12 63 64 49 19 98 3 45 4 35 28 43 51 26 38 23 96 44 22 7 79 80 67 +Card 130: 80 61 1 62 46 5 84 17 14 49 | 75 84 61 85 29 62 46 1 17 63 3 31 57 79 19 58 96 14 76 42 32 49 5 80 56 +Card 131: 63 30 2 29 71 37 12 36 16 47 | 14 82 99 98 52 39 19 60 4 90 74 33 65 27 62 7 32 64 10 37 35 15 11 69 59 +Card 132: 68 81 89 42 36 34 18 53 74 41 | 24 37 14 73 97 54 59 90 9 29 49 10 47 32 85 87 99 98 78 39 27 22 57 81 33 +Card 133: 89 9 10 61 30 81 36 84 70 12 | 69 10 4 90 65 50 93 34 54 13 80 16 98 49 42 35 77 61 85 55 86 6 11 23 39 +Card 134: 27 19 90 30 85 41 58 79 53 11 | 15 58 36 52 11 93 54 24 26 39 51 79 56 35 30 85 53 6 17 32 5 16 87 27 33 +Card 135: 26 44 30 42 99 89 76 27 64 48 | 38 70 95 25 60 2 49 35 71 5 17 63 62 88 20 41 79 19 67 72 40 46 81 10 74 +Card 136: 70 64 49 85 48 16 41 52 91 24 | 48 2 62 28 54 78 50 52 83 7 43 90 96 60 10 26 12 6 95 51 91 25 47 67 87 +Card 137: 10 6 53 80 8 93 62 98 60 82 | 28 19 36 1 14 73 85 16 8 32 21 13 97 90 2 29 34 69 55 80 6 27 62 37 10 +Card 138: 28 25 60 17 99 39 35 48 34 26 | 46 32 33 43 98 10 62 70 41 17 40 27 34 67 4 26 85 63 58 60 16 97 14 57 20 +Card 139: 42 49 16 73 10 23 35 41 93 8 | 76 28 17 32 91 96 92 19 61 97 88 27 83 80 72 57 87 33 14 67 42 10 64 94 65 +Card 140: 81 17 80 94 54 21 57 12 60 48 | 88 27 7 11 6 28 98 33 94 77 14 53 1 92 50 22 93 49 18 86 84 63 42 64 90 +Card 141: 98 31 93 30 72 39 33 35 57 54 | 45 95 69 89 51 55 21 67 50 68 46 5 86 65 17 82 29 48 8 91 71 63 25 52 1 +Card 142: 81 61 78 99 24 42 13 10 3 9 | 8 41 38 63 5 82 54 46 67 83 45 20 44 19 91 92 1 4 77 32 17 59 21 50 94 +Card 143: 78 65 47 51 54 16 23 59 39 34 | 34 53 78 4 29 59 3 87 23 73 16 65 24 38 58 21 89 92 54 39 47 30 66 37 88 +Card 144: 61 73 60 75 2 23 24 44 1 40 | 45 72 5 22 77 88 78 21 76 16 39 85 46 51 97 80 4 27 41 37 9 71 38 28 65 +Card 145: 28 24 22 79 56 23 51 50 54 63 | 22 25 11 44 59 28 50 2 29 85 79 24 54 8 6 23 92 20 71 56 81 95 51 26 63 +Card 146: 28 74 36 10 32 15 72 30 83 73 | 76 7 10 49 11 74 20 62 24 26 21 40 79 41 34 55 98 95 82 43 89 37 9 45 52 +Card 147: 80 20 78 59 53 42 31 95 63 11 | 80 59 61 57 86 42 78 53 21 95 92 75 15 31 97 72 5 11 41 90 63 56 44 25 20 +Card 148: 58 73 92 17 9 24 30 49 5 20 | 95 77 78 72 20 24 1 27 82 92 58 49 74 59 5 65 73 9 84 4 14 76 43 17 30 +Card 149: 87 18 12 98 41 27 13 48 82 37 | 87 78 2 88 61 36 95 25 81 18 41 33 1 69 34 57 27 73 55 12 82 31 59 48 6 +Card 150: 35 47 42 66 43 72 76 68 21 20 | 83 85 8 71 21 6 60 74 96 55 2 19 9 11 98 62 20 39 41 10 30 81 33 51 31 +Card 151: 83 24 73 61 49 67 89 95 60 43 | 59 84 28 21 26 72 37 43 38 3 13 6 9 27 7 42 77 19 65 16 71 52 29 80 33 +Card 152: 99 54 98 50 69 82 51 95 73 62 | 86 38 88 79 9 63 45 34 23 80 47 30 83 14 93 4 96 49 15 52 16 20 33 76 75 +Card 153: 76 36 9 23 70 53 41 74 27 64 | 40 71 39 29 88 19 76 97 46 23 4 68 67 33 52 95 62 91 60 11 75 13 81 99 37 +Card 154: 27 71 72 6 69 76 59 44 51 80 | 5 2 17 82 58 83 7 9 61 70 43 96 87 78 69 42 88 74 85 31 99 13 16 81 15 +Card 155: 82 71 39 56 8 42 1 63 92 11 | 16 52 94 85 67 11 98 65 50 71 2 78 43 1 41 66 86 72 77 36 30 6 46 70 38 +Card 156: 90 44 46 70 71 60 5 68 57 77 | 1 28 62 56 87 32 23 37 40 68 18 94 20 97 72 21 4 33 50 73 16 80 22 14 45 +Card 157: 60 51 2 24 69 85 55 47 62 48 | 6 86 49 55 78 42 61 98 30 77 65 4 21 20 38 93 54 18 72 44 32 8 14 58 37 +Card 158: 50 45 37 6 18 12 2 69 23 76 | 10 70 54 79 95 4 36 87 73 22 94 42 26 21 57 15 7 14 74 90 67 3 33 49 63 +Card 159: 26 12 57 16 96 61 42 99 71 25 | 25 51 26 9 47 57 4 53 61 12 97 36 76 39 99 65 92 16 78 41 71 62 48 96 42 +Card 160: 48 43 26 9 31 62 10 60 38 59 | 59 26 38 4 10 85 55 6 62 18 35 33 29 95 9 60 79 11 24 34 43 22 88 16 12 +Card 161: 15 82 90 63 18 26 57 9 47 35 | 63 23 43 56 82 92 9 42 94 4 90 89 10 26 62 32 20 30 52 85 18 19 47 66 57 +Card 162: 4 37 67 35 71 22 17 14 49 16 | 10 82 7 16 87 99 84 45 20 21 97 79 43 29 86 54 19 9 81 85 62 78 1 61 24 +Card 163: 41 6 57 96 5 21 9 89 65 27 | 26 12 23 9 17 89 33 2 28 65 92 10 97 27 96 56 80 64 90 50 52 46 42 6 5 +Card 164: 53 51 16 32 60 84 55 14 18 25 | 18 52 56 28 6 89 80 19 23 29 57 34 8 70 79 41 91 90 96 88 66 35 97 44 82 +Card 165: 17 66 59 23 35 45 32 49 56 26 | 2 74 97 9 80 76 12 50 31 15 53 41 56 33 30 98 20 44 25 81 91 45 55 99 24 +Card 166: 92 25 70 80 85 88 62 81 61 43 | 40 62 21 83 44 18 87 5 81 43 13 10 85 30 1 53 99 79 68 16 49 20 56 7 15 +Card 167: 36 63 98 92 11 59 6 47 2 83 | 41 90 83 68 54 64 25 80 56 7 99 16 5 30 27 88 63 11 22 67 81 17 9 39 95 +Card 168: 64 20 56 74 5 21 70 52 33 58 | 4 64 28 7 44 80 12 38 8 89 83 57 37 54 87 69 48 63 2 72 78 85 62 60 15 +Card 169: 13 92 14 8 98 84 54 85 97 38 | 51 90 69 98 38 13 4 8 67 5 91 14 54 68 10 18 83 56 41 25 81 73 58 17 62 +Card 170: 54 39 20 12 50 6 83 85 33 45 | 3 97 19 5 61 66 81 46 24 56 29 92 52 85 73 43 71 13 60 12 36 62 64 35 32 +Card 171: 33 36 27 29 93 73 83 62 60 82 | 4 71 14 72 45 58 10 38 12 69 27 3 95 31 84 34 66 83 21 87 22 5 75 53 35 +Card 172: 92 9 73 82 15 6 44 28 88 34 | 99 78 11 46 9 36 89 65 17 8 16 94 68 63 12 54 25 33 69 47 13 38 93 50 59 +Card 173: 41 10 43 83 81 39 66 17 28 63 | 48 79 29 20 64 59 55 46 47 45 70 62 37 16 84 68 82 88 67 2 65 97 18 56 14 +Card 174: 53 73 55 83 9 57 87 35 1 42 | 66 52 56 76 19 92 78 91 82 87 20 39 31 72 43 71 11 33 15 18 75 84 46 47 22 +Card 175: 93 51 74 60 92 84 87 58 81 34 | 67 7 99 68 30 66 27 43 65 71 28 50 2 13 32 26 72 76 17 31 49 3 54 95 82 +Card 176: 3 92 48 97 73 37 84 44 53 91 | 21 35 42 99 87 36 31 43 79 52 89 6 59 14 57 26 76 33 38 19 82 63 74 25 39 +Card 177: 46 93 6 62 56 3 76 64 59 7 | 88 46 7 98 93 76 60 59 6 3 72 64 21 40 77 78 62 47 61 42 45 99 56 28 41 +Card 178: 43 69 96 12 88 93 97 33 80 20 | 58 94 56 93 12 2 20 24 14 40 27 73 97 80 99 43 74 16 91 88 33 96 71 25 69 +Card 179: 59 1 88 53 87 90 39 32 97 89 | 70 57 90 20 73 35 32 88 58 71 36 59 33 1 55 97 87 98 45 39 9 96 53 60 89 +Card 180: 33 19 87 82 90 1 14 78 84 35 | 89 19 20 3 66 23 87 54 78 39 65 84 35 83 33 69 14 90 44 49 72 38 75 82 1 +Card 181: 60 32 78 83 82 29 90 14 46 87 | 63 72 92 39 75 10 43 40 7 89 11 32 86 54 4 90 68 45 95 91 13 1 56 6 29 +Card 182: 11 18 63 73 64 39 9 92 82 62 | 8 27 69 64 3 53 73 11 21 39 10 18 35 44 56 62 75 72 4 51 6 42 82 37 76 +Card 183: 88 56 32 39 23 49 92 50 59 28 | 92 2 48 32 63 49 59 83 56 1 91 41 50 88 28 17 39 57 20 36 34 6 60 23 42 +Card 184: 34 97 99 76 32 75 69 83 60 79 | 44 86 52 99 85 32 34 4 28 79 76 46 22 83 54 56 60 31 75 51 80 89 45 69 97 +Card 185: 74 35 67 1 55 18 60 37 17 50 | 85 50 44 20 87 14 22 32 55 18 17 59 28 93 1 96 68 37 74 60 98 97 67 35 4 +Card 186: 44 36 3 80 6 24 90 81 34 61 | 76 69 14 77 53 21 4 16 18 46 9 59 34 38 98 13 30 11 7 17 88 41 42 99 23 +Card 187: 54 53 39 24 80 78 13 46 17 67 | 62 91 86 52 80 59 26 78 73 46 16 77 18 37 9 55 13 17 72 69 32 68 67 34 81 +Card 188: 50 19 11 73 61 75 67 54 12 84 | 73 84 97 56 74 59 35 75 61 14 15 19 24 12 51 6 58 11 89 67 53 25 21 54 50 +Card 189: 76 48 38 17 97 67 42 23 82 6 | 73 10 17 70 85 95 54 43 93 91 3 82 26 16 23 76 33 38 67 48 5 53 97 6 42 +Card 190: 61 19 93 50 11 56 32 5 84 37 | 32 62 82 84 50 61 91 15 69 19 68 20 74 92 10 55 11 93 39 37 18 5 47 22 46 +Card 191: 2 58 93 26 23 31 60 74 35 47 | 74 64 26 68 8 60 11 73 93 42 87 2 31 97 61 47 65 24 58 66 53 38 94 46 88 +Card 192: 64 37 49 88 95 79 29 59 2 99 | 39 63 31 68 36 24 60 9 94 89 93 13 45 77 38 55 14 23 92 83 29 33 44 34 71 +Card 193: 19 23 99 89 26 80 63 60 59 66 | 78 80 99 60 66 47 84 59 24 61 5 63 67 26 87 42 96 10 54 98 19 81 4 43 8 +Card 194: 6 36 31 40 89 19 63 16 60 68 | 75 84 91 77 40 5 81 10 52 86 19 96 16 58 30 6 78 61 82 74 97 89 90 62 37 +Card 195: 45 54 92 67 47 65 91 98 87 29 | 5 72 15 25 88 36 73 20 91 90 83 46 87 47 10 22 69 2 62 57 28 93 3 59 1 +Card 196: 88 34 96 16 54 9 17 89 20 52 | 20 54 47 61 12 57 38 11 8 85 74 52 90 77 41 46 4 89 19 39 34 83 55 7 97 +Card 197: 38 3 57 72 97 45 66 73 56 8 | 83 68 28 64 58 66 85 15 53 65 23 3 37 87 20 17 47 63 55 69 88 70 62 92 76 +Card 198: 98 66 29 17 83 9 6 84 36 70 | 21 10 31 84 93 14 67 29 24 91 12 41 99 19 5 56 83 74 2 8 79 95 64 49 53 +Card 199: 41 93 33 26 45 65 97 39 20 95 | 82 8 30 6 34 58 49 16 29 91 64 80 50 9 74 59 19 60 69 53 61 3 83 67 35 +Card 200: 86 85 91 2 27 65 45 73 60 69 | 66 26 28 7 98 80 14 52 6 35 57 46 39 4 30 55 94 75 82 83 96 13 74 9 58 +Card 201: 30 53 41 42 10 51 37 63 46 67 | 84 74 33 5 86 32 45 83 52 1 13 43 65 49 98 91 9 11 96 66 15 62 27 44 24 \ No newline at end of file diff --git a/day4/sample.txt b/day4/sample.txt new file mode 100644 index 0000000..71f208a --- /dev/null +++ b/day4/sample.txt @@ -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 \ No newline at end of file diff --git a/day5/index.js b/day5/index.js new file mode 100644 index 0000000..08178cb --- /dev/null +++ b/day5/index.js @@ -0,0 +1,85 @@ +export const part1 = ({ input }) => { + const almanac = extractAlmanac({ input }); + let list = almanac.seeds; + let result = processSeeds({ list, almanac }); + return result; +}; + +export const part2 = ({ input }) => { + const almanac = extractAlmanac({ input }); + let listRanges = almanac.seeds; + let list = []; + for (let i = 0; i < listRanges.length; i += 2) { + list.push(...Array.from({ length: listRanges[i + 1] }, (_, i) => i + listRanges[i])); + } + let result = processSeeds({ list, almanac }); + return result; +}; + +const processSeeds = ({ list, almanac }) => { + let result = 0; + let current = "seed"; + let newList = []; + while (current !== "location") { + const conversion = almanac.conversions.find((c) => c.from === current); + conversion.ranges.forEach((range) => { + let difference = range.destinationRange - range.sourceRange; + let from = range.sourceRange; + let to = range.sourceRange + range.length - 1; + + for (let i = list.length - 1; i >= 0; i--) { + const item = list[i]; + if (item >= from && item <= to) { + newList.push(item + difference); + list.splice(i, 1); + } + } + }); + list = [...list, ...newList]; + newList = []; + current = conversion.to; + } + result = Math.min(...list); + return result; +}; + +const extractAlmanac = ({ input }) => { + let almanac = { conversions: [] }; + + let conversion = {}; + input.forEach((line, i) => { + if (i === 0) { + almanac.seeds = line.split(": ")[1].split(" ").map(Number); + return; + } + if (line === "") { + if (conversion.from) { + almanac.conversions.push(conversion); + conversion = {}; + } + return; + } + if (line.indexOf("-to-") > -1) { + let [from, to] = line.split("-to-"); + to = to.split(" map")[0]; + conversion = { + from: from, + to: to, + ranges: [], + }; + return; + } + let [destinationRange, sourceRange, length] = line.split(" "); + conversion.ranges.push({ + destinationRange: parseInt(destinationRange), + sourceRange: parseInt(sourceRange), + length: parseInt(length), + }); + }); + if (conversion.from) { + almanac.conversions.push(conversion); + } + return almanac; +}; + +const extractRanges = ({ input }) => {}; diff --git a/day5/input.txt b/day5/input.txt new file mode 100644 index 0000000..0b06187 --- /dev/null +++ b/day5/input.txt @@ -0,0 +1,235 @@ +seeds: 1778931867 1436999653 3684516104 2759374 1192793053 358764985 1698790056 76369598 3733854793 214008036 4054174000 171202266 3630057255 25954395 798587440 316327323 290129780 7039123 3334326492 246125391 + +seed-to-soil map: +1965922922 2387203602 59808406 +2540447436 434094583 220346698 +2217992666 1677013102 149631368 +0 700424909 25332775 +2488189883 199146916 52257553 +1096820417 2512808179 247985955 +25332775 725757684 113904366 +4167057552 3534307691 127909744 +1787863383 0 33562512 +2947958449 3662217435 64182733 +2907785302 3360301224 40173147 +3774943096 4218385602 76581694 +693455216 1273647901 403365201 +380961654 1909017232 171283127 +139237141 1031923388 241724513 +2367624034 251404469 38193087 +3038180364 3429533867 104773824 +2484064707 1826644470 4125176 +1344806372 128789319 70357597 +3012141182 3109705711 26039182 +1821425895 289597556 144497027 +598228409 33562512 95226807 +2405817121 1830769646 78247586 +552244781 654441281 45983628 +3641222276 3255639900 104661324 +3851524790 3726400168 315532762 +2025731328 839662050 192261338 +3464769604 4041932930 176452672 +1480960140 2080300359 306903243 +1415163969 2447012008 65796171 +3142954188 2787890295 321815416 +3745883600 3400474371 29059496 +2787890295 3135744893 119895007 + +soil-to-fertilizer map: +974611207 822914672 41736646 +1617020803 484683369 227984726 +2936246728 1897199618 22236339 +1599589242 1541299272 17431561 +897092117 484593057 90312 +2958483067 3614284126 70951194 +3636585470 2567424345 5451325 +0 2712467888 73845937 +2654331234 1997195625 281915494 +3241974258 3685235320 31499686 +3642036795 3512208003 74698211 +1092039278 1347003830 194295442 +790747225 1558730833 106344892 +897182429 42121154 77428778 +1845005529 380881656 29170315 +313046856 3156899567 355308436 +1952497963 410051971 74541086 +3043555623 2369005710 198418635 +2040295599 119549932 261331724 +3630375808 2279111119 6209662 +3383720521 1665075725 217219287 +2301627323 2670771541 41696347 +1515904313 2285320781 83684929 +73845937 1076160024 239200919 +2343323670 864651318 182031257 +2027039049 3601027576 13256550 +2622688347 1315360943 31642887 +2525354927 2572875670 19573752 +1286334720 1076118575 41449 +4007771416 3743620838 287195880 +668355292 0 42121154 +1286376169 1882295012 14904606 +3600939808 1046682575 29436000 +2544928679 1919435957 77759668 +3273473944 712668095 110246577 +3029434261 3586906214 14121362 +3743620838 4030816718 264150578 +710476446 2786313825 80270779 +1016347853 3081208142 75691425 +1874175844 2592449422 78322119 +1301280775 2866584604 214623538 + +fertilizer-to-water map: +2256462238 272868806 222756596 +2883874475 1945255196 178320531 +1025753868 1262393928 220069640 +2780673998 2532762404 101990486 +222030751 1026223684 236170244 +828766276 1895857025 35481787 +3755107810 3521770115 3468846 +2048518620 2246637941 74827173 +550785854 2716185082 5650779 +1819399513 252684903 20183903 +4134370427 3177062502 147573242 +1893363918 2365324803 45336497 +458200995 495625402 92584859 +3472537931 3557968177 35060837 +122101104 2962265359 99929647 +2192091098 2172374449 64371140 +3538267850 3324635744 184110744 +3758576656 3169743127 7319375 +0 2410661300 122101104 +4281943669 3508746488 13023627 +1849504229 2321465114 43859689 +3722378594 3525238961 32729216 +1245823508 588210261 161392539 +878164447 2814675938 147589421 +864248063 1931338812 13916384 +1938700415 749602800 109818205 +2123345793 2745930633 68745305 +3765896031 3826310364 218680395 +747334084 2634752890 78853599 +3984576426 4075659841 149794001 +2882664484 1482463568 1209991 +723239312 2721835861 24094772 +3169743127 3593029014 233281350 +1839583416 252656442 28461 +2479218834 0 252656442 +3507598768 4044990759 30669082 +826187683 2713606489 2578593 +1839611877 2236745589 9892352 +556436633 859421005 166802679 +3403024477 4225453842 69513454 +2731875276 2123575727 48798722 +1407216047 1483673559 412183466 + +water-to-light map: +2717406339 2056643664 131336656 +2149066749 0 164219220 +3368552624 3554596203 347071357 +648177882 2187980320 58382041 +2313285969 387274540 87651626 +1956244903 880459831 74655597 +630498803 2299352502 17679079 +2030900500 1938477415 118166249 +2958998106 3901667560 109063910 +0 2317031581 376289577 +1862852214 809822482 58007210 +3962172007 3368255348 186340855 +1920859424 164219220 35385479 +829057433 474926166 334896316 +2848742995 867829692 12630139 +3068062016 3067764740 300490608 +2628314327 1849385403 89092012 +1363807094 955115428 499045120 +441461908 1660348508 189036895 +1195755118 2693321158 168051976 +706559923 199604699 122497510 +3824390615 4010731470 137781392 +2400937595 2246362361 21188772 +3715623981 2958998106 108766634 +1163953749 2267551133 31801369 +2422126367 1454160548 206187960 +376289577 322102209 65172331 + +light-to-temperature map: +356025838 1142133666 189347695 +155231063 1824123064 78066821 +3486401291 3916497965 63138309 +3054537751 3004205340 53510430 +545373533 1910851890 39759630 +43898462 1414278470 16090003 +233297884 608643392 7876607 +0 1051586050 43898462 +3108048181 3669777676 160948090 +3567273965 3979636274 194976344 +146569058 1902189885 8662005 +1423483364 1430368473 110560056 +2195994218 3468690397 201087279 +2497560353 2680093671 17356840 +2667148760 3057715770 80634162 +2747782922 2697450511 306754829 +585133163 1540928529 283194535 +1534043420 440260576 168382816 +3762250309 2063919656 446944788 +3318335889 3300624995 168065402 +1308588274 1331481361 82797109 +74539638 616519999 1422739 +2546794082 4174612618 120354678 +3268996271 3201674123 49339618 +2127243847 2611343300 68750371 +59988465 1095484512 14551173 +2397081497 2510864444 100478856 +1391385383 1110035685 32097981 +1702426236 1016254966 35331084 +3549539600 3282890630 17734365 +2063919656 3138349932 63324191 +1737757320 803400766 212854200 +2514917193 3251013741 31876889 +4209195097 3830725766 85772199 +1003769840 135442142 304818434 +241174491 617942738 114851347 +868327698 0 135442142 +75962377 732794085 70606681 + +temperature-to-humidity map: +3056037605 2829211160 523334807 +321779731 0 47068359 +3924298564 3372771457 370668732 +1103457901 562085848 156691500 +0 240306117 321779731 +368848090 1020196358 239953043 +2829211160 3743440189 226826445 +608801133 718777348 301419010 +3579372412 3970266634 324700662 +3915140668 3363613561 9157896 +910220143 232146746 8159371 +3904073074 3352545967 11067594 +918379514 47068359 185078387 + +humidity-to-location map: +1384411009 3878276792 140553103 +3206048776 3137400006 12882465 +2370337851 2414914902 179202838 +23738616 0 161914533 +0 262282387 23738616 +840681798 3768356904 109919888 +2340008493 3054171079 26130417 +1524964112 840681798 815044381 +3130048499 2668879895 76000277 +185653149 548908967 81490523 +3465042209 3687267183 62255927 +367511526 286021003 262887964 +3005762489 2744880172 124286010 +1025363841 2357768227 57146675 +2549540689 1901546427 456221800 +3218931241 4018829895 240309425 +1101344310 2869166182 185004897 +1286349207 1655726179 98061802 +2366138910 1753787981 4198941 +3459240666 4259139320 5801543 +950601686 2594117740 74762155 +3584396646 1757986922 143559505 +267143672 161914533 100367854 +3527298136 3080301496 57098510 +1082510516 3749523110 18833794 +3727956151 3150282471 536984712 \ No newline at end of file diff --git a/day5/sample.txt b/day5/sample.txt new file mode 100644 index 0000000..bd902a4 --- /dev/null +++ b/day5/sample.txt @@ -0,0 +1,33 @@ +seeds: 79 14 55 13 + +seed-to-soil map: +50 98 2 +52 50 48 + +soil-to-fertilizer map: +0 15 37 +37 52 2 +39 0 15 + +fertilizer-to-water map: +49 53 8 +0 11 42 +42 0 7 +57 7 4 + +water-to-light map: +88 18 7 +18 25 70 + +light-to-temperature map: +45 77 23 +81 45 19 +68 64 13 + +temperature-to-humidity map: +0 69 1 +1 0 69 + +humidity-to-location map: +60 56 37 +56 93 4 \ No newline at end of file diff --git a/day6/index.js b/day6/index.js new file mode 100644 index 0000000..5f64e6f --- /dev/null +++ b/day6/index.js @@ -0,0 +1,39 @@ +export const part1 = ({ input }) => { + let result = 0; + const times = input[0].match(/\d+/g).map((num) => parseInt(num)); + const records = input[1].match(/\d+/g).map((num) => parseInt(num)); + const waysToBeat = []; + times.forEach((time, index) => { + const distances = calculateDistances(time); + waysToBeat.push(distances.filter((distance) => distance.distance > records[index])); + }); + + result = waysToBeat.reduce((result, array) => result * array.length, 1); + return result; +}; + +export const part2 = ({ input }) => { + const time = parseInt(input[0].replace(/\D/g, "")); + const record = parseInt(input[1].replace(/\D/g, "")); + + let result = 0; + + for (let i = 0; i < time; i++) { + const distance = i * (time - i); + if (distance > record) { + result++; + } + } + + return result; +}; + +const calculateDistances = (maxTime) => { + const distances = []; + let speed = 0; + for (let i = 0; i < maxTime; i++) { + speed = i; + distances.push({ distance: speed * (maxTime - i), pushTime: i }); + } + return distances; +}; diff --git a/day6/input.txt b/day6/input.txt new file mode 100644 index 0000000..1c330b9 --- /dev/null +++ b/day6/input.txt @@ -0,0 +1,2 @@ +Time: 50 74 86 85 +Distance: 242 1017 1691 1252 \ No newline at end of file diff --git a/day6/sample.txt b/day6/sample.txt new file mode 100644 index 0000000..b39f49d --- /dev/null +++ b/day6/sample.txt @@ -0,0 +1,2 @@ +Time: 7 15 30 +Distance: 9 40 200 \ No newline at end of file diff --git a/day7/index.js b/day7/index.js new file mode 100644 index 0000000..a3f215d --- /dev/null +++ b/day7/index.js @@ -0,0 +1,108 @@ +import fs from "fs"; +const cardOrder = "23456789TJQKA"; +const handType = { + HIGH_CARD: 0, + ONE_PAIR: 1, + TWO_PAIR: 2, + THREE_OF_A_KIND: 3, + FULL_HOUSE: 4, + FOUR_OF_A_KIND: 5, + FIVE_OF_A_KIND: 6, +}; + +export const part1 = ({ input }) => { + let result = 0; + const hands = splitHands({ input }); + hands.map(getHandType); + hands.sort(sortHands); + + writeArrayToFile(hands, "hands.txt"); + hands.forEach((hand, i) => { + result += hand.bid * (i + 1); + }); + return result; +}; + +export const part2 = ({ input }) => { + let result = 0; + return result; +}; + +const splitHands = ({ input }) => { + const hands = []; + input.forEach((hand) => { + const split = hand.split(" "); + const details = { + cards: split[0].split(""), + bid: parseInt(split[1]), + type: handType.HIGH_CARD, + }; + hands.push(details); + }); + return hands; +}; + +function getHandType(hand) { + const mergedString = hand.cards.join(""); + const regexPair = /([A-Z0-9])(.*\1)/; + const regexThreeOfAKind = /([A-Z0-9]).*\1.*\1/; + const regexFourOfAKind = /([A-Z0-9]).*\1.*\1.*\1/; + const regexFiveOfAKind = /([A-Z0-9]).*\1.*\1.*\1.*\1/; + const regexTwoPair = /([A-Z0-9]).*\1.*([A-Z0-9]).*\2/; + const regexFullHouse = /([A-Z0-9]).*\1.*\1.*([A-Z0-9]).*\2/; + + if (regexFiveOfAKind.test(mergedString)) { + hand.type = handType.FIVE_OF_A_KIND; + } else if (regexFourOfAKind.test(mergedString)) { + hand.type = handType.FOUR_OF_A_KIND; + } else if (regexFullHouse.test(mergedString)) { + hand.type = handType.FULL_HOUSE; + } else if (regexThreeOfAKind.test(mergedString)) { + hand.type = handType.THREE_OF_A_KIND; + } else if (regexTwoPair.test(mergedString)) { + hand.type = handType.TWO_PAIR; + } else if (regexPair.test(mergedString)) { + hand.type = handType.ONE_PAIR; + } + + return hand; +} + +const sortHands = (handA, handB) => { + if (handA.type > handB.type) { + return 1; + } else if (handA.type < handB.type) { + return -1; + } + + let i; + for (i = 0; i < 5; i++) { + if (handA.cards[i] === handB.cards[i]) { + continue; + } + + if (cardOrder.indexOf(handA.cards[i]) > cardOrder.indexOf(handB.cards[i])) { + return 1; + } + + if (cardOrder.indexOf(handA.cards[i]) < cardOrder.indexOf(handB.cards[i])) { + return -1; + } + + if (i > 4) { + return 0; + } + } +}; + +function writeArrayToFile(array, filename) { + const content = array.map(JSON.stringify).join("\n"); + + fs.writeFile(filename, content, (err) => { + if (err) { + console.error(err); + return; + } + console.log("Data written to file successfully."); + }); +} diff --git a/day7/input.txt b/day7/input.txt new file mode 100644 index 0000000..c762a16 --- /dev/null +++ b/day7/input.txt @@ -0,0 +1,1000 @@ +T6782 898 +26T7A 345 +56856 92 +88J88 379 +8QQJ8 792 +QQQT8 607 +98998 912 +888T7 491 +7A6Q9 220 +6QJ23 746 +T5297 133 +44874 357 +84854 864 +8JQQ2 383 +J2KT2 649 +84488 234 +JQ4QT 534 +JJAAA 855 +8J49Q 458 +5QK4A 474 +5535T 504 +T3785 237 +28J88 315 +4544A 680 +7T773 731 +KJKKK 190 +5Q5QK 249 +6664T 747 +QTQQT 164 +ATTAA 290 +95752 486 +J3JAA 324 +K9K9J 204 +99959 867 +K4KKK 980 +A937J 37 +654A9 700 +7553K 352 +8333K 361 +ATJT8 771 +26226 940 +TTJ7Q 834 +QQ33J 117 +62J57 890 +J3A4A 124 +T4JT4 677 +93528 31 +TJA2J 509 +Q222A 126 +52T67 177 +3J9TT 629 +33QQ3 471 +22232 9 +82279 283 +3A3AJ 583 +7343T 829 +93338 836 +T588Q 70 +88K85 593 +55353 926 +Q3749 295 +T6JAK 586 +9AA3J 183 +55565 342 +8K4Q8 910 +AA4A4 907 +78T2A 112 +4J66K 263 +TKJTT 386 +66Q6Q 131 +26266 187 +23AQ3 600 +95K3Q 279 +32522 684 +8Q8Q7 62 +KKAKK 579 +QJ885 899 +66J2K 396 +555J5 592 +88TJ6 767 +352K2 94 +J6488 634 +5A32J 943 +AAAKA 673 +J8AAA 667 +2K5JK 768 +Q4578 294 +4447K 227 +QQQQ7 808 +JJ333 176 +49586 515 +622T7 622 +94359 140 +8QJ2A 239 +Q69JT 939 +A75T9 425 +JKA93 887 +AA7AA 157 +TTTJ5 122 +J2J3J 118 +3J333 681 +3769A 429 +A2K92 123 +53Q8K 257 +A83K4 905 +2935K 543 +66466 421 +34394 963 +QQ433 520 +KTKKK 83 +66677 346 +Q83JQ 334 +6AT54 79 +K4949 442 +37374 627 +73777 571 +JQKKJ 648 +42242 226 +KK888 319 +5K6Q2 971 +AA3JA 51 +4AK87 78 +3J343 840 +K3333 25 +33484 401 +9J866 565 +Q399Q 116 +2K597 742 +66A53 793 +AQQAQ 779 +Q3QJJ 470 +75496 4 +8JJT3 775 +99JKJ 437 +22J9J 60 +39AAT 424 +3J43J 507 +33TJ9 414 +99395 209 +A984Q 821 +A88J8 757 +T3A68 432 +36666 646 +KKKAA 175 +K9TTK 392 +33KK5 308 +KK4K4 675 +64443 370 +TQJ9Q 645 +QT999 669 +J5T88 789 +89TJ4 245 +T436T 605 +6T464 36 +JQQ3Q 11 +68666 423 +KKJKT 785 +T4K3A 847 +6T6JT 915 +8Q756 163 +9AAA2 343 +9AJK8 556 +3JJ69 154 +7K7K3 316 +6737Q 641 +88J7J 975 +5J445 270 +KATJT 659 +6J866 717 +989T9 529 +2897K 321 +4A2T5 984 +7AA99 485 +JK222 397 +75468 282 +QT3J3 91 +3K777 532 +6Q566 460 +2KK75 339 +55258 766 +88558 46 +34J34 419 +T42A8 624 +6JA9K 950 +A8646 135 +66696 66 +37Q7Q 612 +KJAK6 753 +94999 306 +2JJJJ 765 +6JQ3A 459 +K8693 871 +477K7 26 +4T6T8 544 +44JK4 720 +5K5K9 372 +KQ66Q 590 +8A294 57 +JJJJJ 440 +88878 18 +J9649 389 +77677 698 +9K69J 145 +2QT2K 75 +77577 22 +AQ4KA 422 +97477 332 +33933 882 +63646 293 +53A3A 763 +4K93K 928 +KKK37 994 +TA259 173 +K896A 93 +6Q666 438 +J8477 674 +AJAQQ 531 +2JJ2J 726 +5KJT5 672 +A58A2 481 +JJAJT 754 +96444 179 +687A5 528 +TA48J 618 +7Q7Q7 537 +T4A44 23 +473Q6 988 +KQ467 64 +5T555 938 +67T33 444 +KAK99 591 +A6K78 160 +23Q7A 878 +TA5AT 292 +2T6Q5 559 +77979 222 +9AAJA 284 +TK47T 166 +694T2 679 +AAA23 838 +88KJK 170 +QJQ2Q 777 +84486 178 +535JQ 411 +J547T 595 +37773 602 +777JQ 188 +48989 825 +4944K 492 +J8959 375 +72Q5A 908 +Q2AAT 280 +Q3666 119 +48J24 238 +999JA 865 +KK9KK 831 +6Q3JT 909 +3A773 50 +38466 461 +37A25 300 +95555 307 +7Q228 557 +KQ66K 525 +8744K 727 +J9JQ9 475 +A5AKA 148 +A7KJT 309 +TT794 539 +53339 762 +Q9999 6 +A4AT4 993 +888AA 790 +6666A 480 +88Q63 274 +99J92 869 +J8988 884 +8K68J 839 +7QA72 498 +84697 581 +3QK3J 289 +59J8A 692 +Q5J5Q 761 +J777K 930 +T552K 251 +TAT26 715 +6J32T 380 +74K28 523 +22279 104 +8TKT2 393 +68J67 391 +55458 340 +5TK47 395 +822J8 893 +T9388 902 +8TQ3Q 252 +3T549 811 +88883 702 +55J2K 81 +4QTT4 138 +69669 272 +KTKTK 576 +T6668 822 +7J777 736 +9ATJT 892 +Q5QQQ 125 +66T9T 519 +4T244 589 +77747 174 +3J698 837 +39K28 665 +QA459 456 +22342 545 +J8478 489 +Q2962 468 +QAAAA 958 +K8T87 260 +J4KK7 706 +J5J95 695 +47445 724 +K268T 967 +33299 652 +KKKK2 664 +K9JKA 711 +85926 435 +J7K6J 511 +3667J 791 +229QA 633 +998K7 642 +8QQ77 774 +6347A 497 +46526 327 +QK327 750 +KAQ25 927 +27T34 134 +T633T 208 +KKQK7 810 +223J2 900 +5KKJ5 842 +99533 521 +A5Q85 553 +54455 570 +JA946 582 +69Q66 690 +99977 701 +282Q8 428 +4AA42 10 +75977 328 +99T99 948 +J5353 546 +QT95K 285 +KKK3K 896 +9696J 264 +T8275 436 +45J55 80 +69AAA 430 +27J4J 202 +6A888 404 +TQ5K8 819 +55858 113 +T828T 933 +T8888 12 +3KKKT 703 +657J6 291 +8699J 172 +9J99T 705 +A22A2 229 +32263 314 +8QQQQ 101 +2J222 354 +73373 107 +99398 946 +2AA2J 885 +T66J6 184 +3K8K8 903 +KJJKK 611 +22226 781 +9A2J9 191 +AK26J 964 +8KK2Q 317 +82898 883 +T9TTT 195 +584JT 743 +4AA45 61 +93J79 100 +3QJAK 241 +T74AQ 304 +4Q2QQ 548 +KKJ27 330 +A9TKK 39 +6J447 303 +592A6 449 +K9928 65 +9A94K 193 +8T646 431 +Q46K3 20 +K5777 833 +Q9756 30 +33838 638 +65686 298 +A9JAJ 599 +85555 784 +6TAA4 286 +3QQ89 446 +3JT37 463 +8AK5Q 230 +7JAAQ 580 +754TQ 74 +9AQQ4 729 +2933J 678 +62757 575 +29929 619 +A3AAA 216 +Q557Q 691 +A7Q8T 983 +3TJQT 668 +A3KJA 503 +7AA77 881 +88288 995 +7QJ3J 770 +5KKJK 265 +444J4 998 +82J87 89 +T3T3J 63 +2QQ76 510 +5QQ25 132 +KKKT5 441 +Q822Q 954 +84858 788 +37627 873 +22959 426 +K6KKJ 454 +4J844 359 +67JQ7 266 +TQ7T2 206 +5QT2J 854 +KK985 42 +3562T 877 +44343 999 +5J595 859 +37888 657 +J65AK 801 +77276 382 +22A22 207 +QQ4K3 253 +9K2K4 161 +888Q8 863 +75J77 518 +K2K2K 150 +2JT62 398 +J3993 719 +AA88A 813 +9499T 211 +A568Q 98 +6KQ6J 962 +QAKA8 367 +998A9 561 +J2357 196 +A797T 663 +6J9J6 505 +2T5T2 759 +K6464 381 +76677 373 +4K92J 33 +5A8JK 447 +8QQ88 660 +3298A 325 +37333 802 +JTQQT 7 +QQQ3A 820 +J5935 506 +K4334 2 +KA749 40 +94QQ9 415 +537KK 225 +25255 913 +835J9 601 +55TTT 647 +92J92 710 +66A6A 312 +A8TT8 914 +4KJKK 271 +T3242 835 +3K636 623 +93T5A 365 +J4739 816 +244A5 465 +A9TT5 560 +2JAA9 224 +TTT7T 356 +AQQAA 656 +QT5Q5 879 +7AA7J 632 +36344 127 +K5T89 243 +797A9 562 +66363 52 +68585 598 +KQ8A9 608 +999K2 21 +52253 151 +A5595 262 +KTTTT 366 +2922T 1000 +25328 815 +3T7T7 806 +Q2Q39 895 +3J432 786 +JA228 782 +AJJ99 621 +8AAQQ 809 +97QAT 143 +456J8 15 +AAJ2A 165 +J55J5 281 +K6945 322 +22A2J 799 +77AAA 666 +Q6J66 168 +7QTJ5 363 +Q38T2 709 +AKT86 936 +QQQQK 585 +JA4J4 130 +AJA73 796 +88QQQ 828 +QQ2Q2 390 +KK77K 301 +A5TQ9 805 +96677 477 +J7495 628 +24222 807 +8QQ83 992 +222K6 861 +949J5 473 +59873 555 +9K584 564 +AAQ7Q 989 +62J2K 445 +4732A 420 +2JT9K 136 +TT989 277 +JJ999 549 +Q9T6K 513 +36J6A 97 +A3J32 986 +8A7TJ 682 +T2784 59 +KJAAK 110 +8KJ88 919 +AKK77 256 +2J876 713 +K3TQ7 115 +8Q6AT 973 +45666 19 +33335 400 +J43K4 851 +A22A9 974 +8Q867 574 +993KA 185 +9K8Q4 464 +5AAAA 949 +27JJ5 686 +3TTT3 606 +T4444 533 +K8838 830 +75682 960 +J89JT 129 +45A5A 886 +KKK6T 416 +AJA6A 626 +AAJKA 182 +AA2A8 73 +7JK88 640 +JJ222 462 +4A455 49 +7JAKQ 812 +AAAA9 387 +777T7 769 +37K2A 348 +QTJ77 355 +KQQKA 500 +QQQ9Q 350 +65666 111 +T7TT7 407 +333TJ 214 +78876 8 +8Q478 409 +8K3AT 934 +6A583 814 +JTJAA 826 +3A373 278 +J4J44 171 +9AAA3 374 +32J32 199 +76TTA 858 +27222 305 +862K6 369 +QJKAA 568 +JK94J 524 +Q6QQ6 852 +2TQ22 987 +J6AJ7 385 +73A6T 106 +QAKQT 925 +2424T 737 +T7ATA 620 +T8A47 613 +J2858 636 +K7373 484 +7QK65 716 +K8QKK 981 +52454 443 +AAAAJ 738 +99J99 69 +6AQJ8 439 +774J9 798 +66JJ6 210 +TTQTQ 35 +7QJ97 694 +QJQQJ 918 +9K999 573 +Q7TT7 68 +46887 704 +T6379 661 +34888 326 +9A999 916 +6466J 849 +666J6 479 +QKKKK 247 +46K48 336 +J6729 467 +A22A6 269 +6KQKK 584 +68J86 961 +8KK87 670 +52656 542 +Q4AJ3 394 +79KJK 77 +Q8965 139 +44474 240 +QJQQQ 434 +AQ449 921 +57A9J 996 +J5835 817 +QQKK3 818 +3943J 13 +4T7A5 956 +44464 517 +5A55J 48 +2J254 722 +9JAT5 487 +Q4757 856 +5Q55A 749 +ATKJ5 82 +J8588 142 +646TQ 783 +38J39 922 +26J77 823 +2TT4T 162 +6666K 137 +QQQ83 758 +32KJT 733 +4J9K8 353 +KQJT7 501 +6T6TK 982 +Q42K9 147 +8734Q 538 +KKA67 794 +JQKKA 804 +QQ555 596 +4JJ45 32 +28383 904 +T5Q45 38 +5T5TJ 221 +Q3K9A 29 +99649 1 +94247 146 +4Q444 362 +5637T 734 +577TT 735 +TT244 364 +56QQQ 149 +K2AQ3 144 +9J959 493 +66Q44 405 +888K8 654 +6J624 635 +9QJKA 569 +K8K5K 120 +24443 344 +6666T 197 +6T747 740 +54523 935 +A96Q2 302 +AJJJA 697 +2T476 90 +55444 403 +QJ22Q 85 +KK9KJ 254 +4938T 156 +5JT8J 741 +Q55K3 527 +627JK 894 +T6245 917 +44864 410 +77QJ3 587 +823A4 457 +32323 259 +9T94T 609 +33J8K 158 +7AK4K 201 +44774 957 +4Q45T 180 +JA82K 978 +333J5 872 +J8948 267 +99933 433 +4T7JJ 563 +85534 862 +K7K8K 24 +JTTKK 824 +TQ8TT 803 +62677 797 +QQATT 965 +QQ668 870 +88724 551 +T3T43 17 +99749 275 +7T6J2 977 +67J77 203 +6T789 167 +22J28 639 +26744 850 +QQQ6Q 47 +QA72T 554 +3AT9T 897 +QJTQ2 261 +696JQ 631 +9KKQJ 490 +469T8 72 +QAT42 951 +AJ2AK 413 +8AQ2T 297 +AJ482 255 +QQQKK 931 +AJA7A 874 +34532 368 +74A44 945 +88989 418 +A2AAA 219 +39999 857 +J7774 687 +Q9925 630 +9JQ9Q 578 +8AA38 689 +8QA2A 427 +Q6Q99 800 +TTTTJ 399 +AA822 614 +ATT47 676 +K2AAA 514 +7J696 338 +J3J87 88 +55547 728 +5A338 86 +838T6 250 +87QAK 970 +795K7 723 +7QTJ6 152 +5A9KQ 494 +KA4TK 650 +Q2222 604 +K5953 452 +K2282 552 +4K586 760 +K4444 868 +724AA 516 +52224 55 +35Q33 58 +46644 331 +T8325 888 +9K229 388 +779TT 920 +97279 95 +JJ374 450 +8JJJJ 610 +84497 217 +8QK4J 233 +KQ6T6 360 +6637Q 53 +KK7QJ 683 +4828A 215 +5TT55 990 +J3768 536 +ATKTK 846 +5T9K4 780 +2T8AT 502 +7T776 712 +KQ93Q 114 +2474J 483 +QQQ46 408 +J5T82 718 +834A9 688 +JT977 615 +69663 296 +4A638 880 +QQQA7 27 +2K22K 377 +29379 972 +244J4 242 +K8KKK 56 +KTQKJ 891 +87K5J 730 +887AA 699 +9QJQA 725 +6J655 929 +8692A 844 +2QQQQ 194 +TJ79Q 969 +JATA9 128 +8448J 103 +9399J 953 +98J77 371 +TT3J5 192 +J3655 924 +6993K 616 +J8788 979 +K9KK3 756 +57AQ4 671 +88KQ7 955 +6AAA6 843 +9494J 105 +6A2QQ 942 +T222T 87 +J9JA5 244 +AKA4A 198 +Q4635 558 +2332T 889 +AKQQ5 827 +97QQQ 337 +JT575 603 +36336 478 +4A43T 653 +5QQ38 349 +97777 776 +TQ6TT 541 +57775 258 +68KKK 469 +92224 121 +4853Q 476 +2Q695 273 +2J626 732 +6A328 246 +5QT27 959 +KJJ77 658 +4K6KK 310 +JAK66 28 +QQK4K 16 +K4923 752 +57555 482 +46T5T 550 +333Q3 496 +2Q93J 755 +778J3 751 +K77KJ 276 +76A96 947 +QTT7T 335 +4T9K6 997 +26926 512 +66464 522 +59997 787 +K462A 508 +K4K7K 333 +Q3Q3Q 707 +A3TKK 772 +7T7J7 44 +TAK54 455 +44JKQ 287 +TQK49 748 +37335 577 +Q743J 200 +Q4A45 236 +KJ62K 288 +544K5 76 +TTTJJ 693 +89999 96 +K8JKK 351 +5JAT8 778 +TAAJT 67 +39339 911 +997K6 329 +5JK88 876 +338QQ 530 +88889 937 +884T8 526 +382QA 320 +86Q35 764 +KQ38A 412 +AA7A8 358 +22Q2K 637 +A22JK 248 +59855 906 +33AJ3 347 +42T2Q 108 +AQ2T6 99 +8KATJ 651 +9JQTT 832 +84847 451 +52K8K 453 +K6553 54 +87778 499 +TAAJA 223 +38298 643 +5557Q 841 +9K6K9 448 +77J73 617 +555K5 976 +A38T4 968 +3333A 472 +5KJ74 866 +7JJ8K 708 +J55Q5 714 +58KA4 795 +AAAA4 488 +Q8QQ7 45 +58A55 311 +27T7T 3 +2J4KA 43 +TT3T9 159 +475K6 109 +48844 323 +4T2T2 186 +Q7A7J 218 +JTJA6 744 +J96J4 721 +8TT88 41 +Q5T96 417 +QTA6T 213 +68A33 169 +J3TT8 34 +44JK8 14 +29983 540 +3666J 845 +436J2 685 +88A88 597 +889J9 313 +77754 848 +2TA99 406 +5KK5K 535 +3KJ75 547 +67666 662 +9T634 231 +QTQQQ 299 +J993T 745 +87Q98 155 +AAAKQ 376 +36Q43 696 +67K67 952 +25Q47 739 +44424 228 +K22JQ 941 +5434Q 232 +8AA6Q 5 +58J55 625 +37535 153 +66868 572 +87788 384 +J5993 860 +K42K4 402 +59Q7T 944 +J2475 495 +KKKK7 773 +9K5Q2 341 +9AQAQ 594 +T5974 181 +42442 901 +T6TTT 932 +25895 268 +44484 212 +88J63 588 +22777 102 +Q7K77 991 +QK9K9 235 +J4544 205 +7K523 985 +T4246 566 +9TQ3A 466 +884JT 644 +59995 84 +7772J 853 +JJ882 318 +25522 923 +TTT9J 189 +23333 378 +58J85 141 +7K45K 567 +JJ777 71 +74A47 875 +2J848 655 +93K65 966 \ No newline at end of file diff --git a/day7/sample.txt b/day7/sample.txt new file mode 100644 index 0000000..5b91aae --- /dev/null +++ b/day7/sample.txt @@ -0,0 +1,24 @@ +23456 22 +56789 19 +KJJKK 2 +AAAAJ 3 +JJ243 7 +QJ256 6 +QQ562 5 +Q8Q24 4 +AAAAT 3 +TJJJJ 2 +6789T 18 +789TJ 17 +22345 13 +34567 21 +45678 20 +32245 12 +33245 11 +89TJQ 16 +9TJQK 15 +TJQKA 14 +3J245 10 +J3425 9 +J5432 8 +JJJJJ 1 \ No newline at end of file diff --git a/empty/index.js b/empty/index.js new file mode 100644 index 0000000..a6f81b0 --- /dev/null +++ b/empty/index.js @@ -0,0 +1,9 @@ +export const part1 = ({ input }) => { + let result = 0; + return result; +}; + +export const part2 = ({ input }) => { + let result = 0; + return result; +}; diff --git a/empty/input.txt b/empty/input.txt new file mode 100644 index 0000000..e69de29 diff --git a/empty/sample.txt b/empty/sample.txt new file mode 100644 index 0000000..e69de29 diff --git a/hands.txt b/hands.txt new file mode 100644 index 0000000..672b558 --- /dev/null +++ b/hands.txt @@ -0,0 +1,1000 @@ +{"cards":["2","3","Q","7","A"],"bid":878,"type":0} +{"cards":["2","5","Q","4","7"],"bid":739,"type":0} +{"cards":["2","6","T","7","A"],"bid":345,"type":0} +{"cards":["2","7","T","3","4"],"bid":134,"type":0} +{"cards":["2","8","9","7","K"],"bid":321,"type":0} +{"cards":["2","9","3","5","K"],"bid":543,"type":0} +{"cards":["2","T","4","7","6"],"bid":90,"type":0} +{"cards":["2","T","6","Q","5"],"bid":559,"type":0} +{"cards":["2","J","4","K","A"],"bid":43,"type":0} +{"cards":["2","J","8","7","6"],"bid":713,"type":0} +{"cards":["2","J","T","9","K"],"bid":136,"type":0} +{"cards":["2","Q","6","9","5"],"bid":273,"type":0} +{"cards":["2","Q","9","3","J"],"bid":755,"type":0} +{"cards":["2","K","5","9","7"],"bid":742,"type":0} +{"cards":["3","2","9","8","A"],"bid":325,"type":0} +{"cards":["3","2","K","J","T"],"bid":733,"type":0} +{"cards":["3","5","6","2","T"],"bid":877,"type":0} +{"cards":["3","7","6","9","A"],"bid":429,"type":0} +{"cards":["3","7","K","2","A"],"bid":348,"type":0} +{"cards":["3","7","A","2","5"],"bid":300,"type":0} +{"cards":["3","8","2","Q","A"],"bid":320,"type":0} +{"cards":["3","9","K","2","8"],"bid":665,"type":0} +{"cards":["3","T","5","4","9"],"bid":811,"type":0} +{"cards":["3","J","6","9","8"],"bid":837,"type":0} +{"cards":["3","Q","J","A","K"],"bid":241,"type":0} +{"cards":["3","K","J","7","5"],"bid":547,"type":0} +{"cards":["4","3","6","J","2"],"bid":685,"type":0} +{"cards":["4","5","6","J","8"],"bid":15,"type":0} +{"cards":["4","6","9","T","8"],"bid":72,"type":0} +{"cards":["4","7","3","2","A"],"bid":420,"type":0} +{"cards":["4","7","3","Q","6"],"bid":988,"type":0} +{"cards":["4","7","5","K","6"],"bid":109,"type":0} +{"cards":["4","8","5","3","Q"],"bid":476,"type":0} +{"cards":["4","9","3","8","T"],"bid":156,"type":0} +{"cards":["4","9","5","8","6"],"bid":515,"type":0} +{"cards":["4","T","7","A","5"],"bid":956,"type":0} +{"cards":["4","T","9","K","6"],"bid":997,"type":0} +{"cards":["4","J","9","K","8"],"bid":353,"type":0} +{"cards":["4","K","5","8","6"],"bid":760,"type":0} +{"cards":["4","K","9","2","J"],"bid":33,"type":0} +{"cards":["4","A","2","T","5"],"bid":984,"type":0} +{"cards":["4","A","6","3","8"],"bid":880,"type":0} +{"cards":["4","A","K","8","7"],"bid":78,"type":0} +{"cards":["5","2","T","6","7"],"bid":177,"type":0} +{"cards":["5","3","Q","8","K"],"bid":257,"type":0} +{"cards":["5","6","3","7","T"],"bid":734,"type":0} +{"cards":["5","7","A","9","J"],"bid":996,"type":0} +{"cards":["5","7","A","Q","4"],"bid":671,"type":0} +{"cards":["5","8","4","J","T"],"bid":743,"type":0} +{"cards":["5","8","K","A","4"],"bid":795,"type":0} +{"cards":["5","9","2","A","6"],"bid":449,"type":0} +{"cards":["5","9","8","7","3"],"bid":555,"type":0} +{"cards":["5","9","J","8","A"],"bid":692,"type":0} +{"cards":["5","9","Q","7","T"],"bid":944,"type":0} +{"cards":["5","T","9","K","4"],"bid":780,"type":0} +{"cards":["5","T","K","4","7"],"bid":395,"type":0} +{"cards":["5","J","A","T","8"],"bid":778,"type":0} +{"cards":["5","Q","T","2","7"],"bid":959,"type":0} +{"cards":["5","Q","T","2","J"],"bid":854,"type":0} +{"cards":["5","Q","K","4","A"],"bid":474,"type":0} +{"cards":["5","K","6","Q","2"],"bid":971,"type":0} +{"cards":["5","K","J","7","4"],"bid":866,"type":0} +{"cards":["5","A","3","2","J"],"bid":943,"type":0} +{"cards":["5","A","8","J","K"],"bid":447,"type":0} +{"cards":["5","A","9","K","Q"],"bid":494,"type":0} +{"cards":["6","2","7","J","K"],"bid":894,"type":0} +{"cards":["6","2","J","5","7"],"bid":890,"type":0} +{"cards":["6","3","4","7","A"],"bid":497,"type":0} +{"cards":["6","5","4","A","9"],"bid":700,"type":0} +{"cards":["6","8","7","A","5"],"bid":528,"type":0} +{"cards":["6","9","4","T","2"],"bid":679,"type":0} +{"cards":["6","T","7","8","9"],"bid":167,"type":0} +{"cards":["6","J","3","2","T"],"bid":380,"type":0} +{"cards":["6","J","Q","3","A"],"bid":459,"type":0} +{"cards":["6","J","A","9","K"],"bid":950,"type":0} +{"cards":["6","Q","3","J","T"],"bid":909,"type":0} +{"cards":["6","Q","J","2","3"],"bid":746,"type":0} +{"cards":["6","A","3","2","8"],"bid":246,"type":0} +{"cards":["6","A","5","8","3"],"bid":814,"type":0} +{"cards":["6","A","T","5","4"],"bid":79,"type":0} +{"cards":["6","A","Q","J","8"],"bid":439,"type":0} +{"cards":["7","2","Q","5","A"],"bid":908,"type":0} +{"cards":["7","3","A","6","T"],"bid":106,"type":0} +{"cards":["7","4","K","2","8"],"bid":523,"type":0} +{"cards":["7","5","4","6","8"],"bid":282,"type":0} +{"cards":["7","5","4","9","6"],"bid":4,"type":0} +{"cards":["7","5","4","T","Q"],"bid":74,"type":0} +{"cards":["7","5","6","8","2"],"bid":960,"type":0} +{"cards":["7","8","T","2","A"],"bid":112,"type":0} +{"cards":["7","T","6","J","2"],"bid":977,"type":0} +{"cards":["7","J","A","K","Q"],"bid":812,"type":0} +{"cards":["7","Q","T","J","5"],"bid":363,"type":0} +{"cards":["7","Q","T","J","6"],"bid":152,"type":0} +{"cards":["7","Q","K","6","5"],"bid":716,"type":0} +{"cards":["7","K","5","2","3"],"bid":985,"type":0} +{"cards":["7","A","6","Q","9"],"bid":220,"type":0} +{"cards":["8","2","3","A","4"],"bid":457,"type":0} +{"cards":["8","3","4","A","9"],"bid":688,"type":0} +{"cards":["8","3","5","J","9"],"bid":601,"type":0} +{"cards":["8","4","6","9","7"],"bid":581,"type":0} +{"cards":["8","5","9","2","6"],"bid":435,"type":0} +{"cards":["8","6","9","2","A"],"bid":844,"type":0} +{"cards":["8","6","Q","3","5"],"bid":764,"type":0} +{"cards":["8","7","3","4","Q"],"bid":538,"type":0} +{"cards":["8","7","Q","A","K"],"bid":970,"type":0} +{"cards":["8","7","K","5","J"],"bid":730,"type":0} +{"cards":["8","9","T","J","4"],"bid":245,"type":0} +{"cards":["8","J","4","9","Q"],"bid":458,"type":0} +{"cards":["8","Q","6","A","T"],"bid":973,"type":0} +{"cards":["8","Q","7","5","6"],"bid":163,"type":0} +{"cards":["8","Q","J","2","A"],"bid":239,"type":0} +{"cards":["8","Q","K","4","J"],"bid":233,"type":0} +{"cards":["8","K","3","A","T"],"bid":934,"type":0} +{"cards":["8","K","A","T","J"],"bid":651,"type":0} +{"cards":["8","A","2","9","4"],"bid":57,"type":0} +{"cards":["8","A","7","T","J"],"bid":682,"type":0} +{"cards":["8","A","Q","2","T"],"bid":297,"type":0} +{"cards":["8","A","K","5","Q"],"bid":230,"type":0} +{"cards":["9","3","5","2","8"],"bid":31,"type":0} +{"cards":["9","3","T","5","A"],"bid":365,"type":0} +{"cards":["9","3","K","6","5"],"bid":966,"type":0} +{"cards":["9","5","K","3","Q"],"bid":279,"type":0} +{"cards":["9","7","Q","A","T"],"bid":143,"type":0} +{"cards":["9","T","6","3","4"],"bid":231,"type":0} +{"cards":["9","T","Q","3","A"],"bid":466,"type":0} +{"cards":["9","J","A","T","5"],"bid":487,"type":0} +{"cards":["9","Q","J","K","A"],"bid":569,"type":0} +{"cards":["9","K","5","8","4"],"bid":564,"type":0} +{"cards":["9","K","5","Q","2"],"bid":341,"type":0} +{"cards":["9","K","8","Q","4"],"bid":464,"type":0} +{"cards":["9","A","J","K","8"],"bid":556,"type":0} +{"cards":["T","2","7","8","4"],"bid":59,"type":0} +{"cards":["T","3","7","8","5"],"bid":237,"type":0} +{"cards":["T","3","A","6","8"],"bid":432,"type":0} +{"cards":["T","4","2","A","8"],"bid":624,"type":0} +{"cards":["T","4","K","3","A"],"bid":847,"type":0} +{"cards":["T","5","2","9","7"],"bid":133,"type":0} +{"cards":["T","5","9","7","4"],"bid":181,"type":0} +{"cards":["T","6","2","4","5"],"bid":917,"type":0} +{"cards":["T","6","3","7","9"],"bid":661,"type":0} +{"cards":["T","6","7","8","2"],"bid":898,"type":0} +{"cards":["T","6","J","A","K"],"bid":586,"type":0} +{"cards":["T","7","4","A","Q"],"bid":304,"type":0} +{"cards":["T","8","2","7","5"],"bid":436,"type":0} +{"cards":["T","8","3","2","5"],"bid":888,"type":0} +{"cards":["T","8","A","4","7"],"bid":613,"type":0} +{"cards":["T","J","7","9","Q"],"bid":969,"type":0} +{"cards":["T","Q","5","K","8"],"bid":819,"type":0} +{"cards":["T","Q","K","4","9"],"bid":748,"type":0} +{"cards":["T","A","2","5","9"],"bid":173,"type":0} +{"cards":["T","A","4","8","J"],"bid":618,"type":0} +{"cards":["T","A","K","5","4"],"bid":455,"type":0} +{"cards":["J","2","3","5","7"],"bid":196,"type":0} +{"cards":["J","2","4","7","5"],"bid":495,"type":0} +{"cards":["J","3","7","6","8"],"bid":536,"type":0} +{"cards":["J","4","7","3","9"],"bid":816,"type":0} +{"cards":["J","5","4","7","T"],"bid":595,"type":0} +{"cards":["J","5","T","8","2"],"bid":718,"type":0} +{"cards":["J","6","5","A","K"],"bid":801,"type":0} +{"cards":["J","6","7","2","9"],"bid":467,"type":0} +{"cards":["J","7","4","9","5"],"bid":628,"type":0} +{"cards":["J","K","A","9","3"],"bid":887,"type":0} +{"cards":["J","A","8","2","K"],"bid":978,"type":0} +{"cards":["J","A","9","4","6"],"bid":582,"type":0} +{"cards":["Q","3","7","4","9"],"bid":295,"type":0} +{"cards":["Q","3","8","T","2"],"bid":709,"type":0} +{"cards":["Q","3","K","9","A"],"bid":29,"type":0} +{"cards":["Q","4","2","K","9"],"bid":147,"type":0} +{"cards":["Q","4","5","7","8"],"bid":294,"type":0} +{"cards":["Q","4","6","3","5"],"bid":558,"type":0} +{"cards":["Q","4","6","K","3"],"bid":20,"type":0} +{"cards":["Q","4","A","J","3"],"bid":394,"type":0} +{"cards":["Q","5","T","9","6"],"bid":417,"type":0} +{"cards":["Q","6","9","J","T"],"bid":939,"type":0} +{"cards":["Q","7","4","3","J"],"bid":200,"type":0} +{"cards":["Q","8","9","6","5"],"bid":139,"type":0} +{"cards":["Q","9","7","5","6"],"bid":30,"type":0} +{"cards":["Q","9","T","6","K"],"bid":513,"type":0} +{"cards":["Q","T","9","5","K"],"bid":285,"type":0} +{"cards":["Q","K","3","2","7"],"bid":750,"type":0} +{"cards":["Q","A","4","5","9"],"bid":456,"type":0} +{"cards":["Q","A","7","2","T"],"bid":554,"type":0} +{"cards":["Q","A","T","4","2"],"bid":951,"type":0} +{"cards":["K","2","6","8","T"],"bid":967,"type":0} +{"cards":["K","2","A","Q","3"],"bid":144,"type":0} +{"cards":["K","3","T","Q","7"],"bid":115,"type":0} +{"cards":["K","4","6","2","A"],"bid":508,"type":0} +{"cards":["K","4","9","2","3"],"bid":752,"type":0} +{"cards":["K","5","T","8","9"],"bid":243,"type":0} +{"cards":["K","6","9","4","5"],"bid":322,"type":0} +{"cards":["K","8","6","9","3"],"bid":871,"type":0} +{"cards":["K","8","9","6","A"],"bid":93,"type":0} +{"cards":["K","Q","3","8","A"],"bid":412,"type":0} +{"cards":["K","Q","4","6","7"],"bid":64,"type":0} +{"cards":["K","Q","8","A","9"],"bid":608,"type":0} +{"cards":["K","Q","J","T","7"],"bid":501,"type":0} +{"cards":["K","A","7","4","9"],"bid":40,"type":0} +{"cards":["K","A","Q","2","5"],"bid":927,"type":0} +{"cards":["A","3","8","T","4"],"bid":968,"type":0} +{"cards":["A","5","6","8","Q"],"bid":98,"type":0} +{"cards":["A","5","T","Q","9"],"bid":805,"type":0} +{"cards":["A","6","K","7","8"],"bid":160,"type":0} +{"cards":["A","7","5","T","9"],"bid":425,"type":0} +{"cards":["A","7","Q","8","T"],"bid":983,"type":0} +{"cards":["A","7","K","J","T"],"bid":309,"type":0} +{"cards":["A","8","3","K","4"],"bid":905,"type":0} +{"cards":["A","9","3","7","J"],"bid":37,"type":0} +{"cards":["A","9","6","Q","2"],"bid":302,"type":0} +{"cards":["A","9","8","4","Q"],"bid":821,"type":0} +{"cards":["A","T","K","J","5"],"bid":82,"type":0} +{"cards":["A","J","4","8","2"],"bid":255,"type":0} +{"cards":["A","Q","2","T","6"],"bid":99,"type":0} +{"cards":["A","K","2","6","J"],"bid":964,"type":0} +{"cards":["A","K","T","8","6"],"bid":936,"type":0} +{"cards":["2","2","9","Q","A"],"bid":633,"type":1} +{"cards":["2","3","3","2","T"],"bid":889,"type":1} +{"cards":["2","3","A","Q","3"],"bid":600,"type":1} +{"cards":["2","4","2","4","T"],"bid":737,"type":1} +{"cards":["2","4","4","A","5"],"bid":465,"type":1} +{"cards":["2","4","7","4","J"],"bid":483,"type":1} +{"cards":["2","5","3","2","8"],"bid":815,"type":1} +{"cards":["2","5","8","9","5"],"bid":268,"type":1} +{"cards":["2","6","7","4","4"],"bid":850,"type":1} +{"cards":["2","6","9","2","6"],"bid":512,"type":1} +{"cards":["2","6","J","7","7"],"bid":823,"type":1} +{"cards":["2","7","T","7","T"],"bid":3,"type":1} +{"cards":["2","7","J","4","J"],"bid":202,"type":1} +{"cards":["2","7","J","J","5"],"bid":686,"type":1} +{"cards":["2","8","2","Q","8"],"bid":428,"type":1} +{"cards":["2","8","3","8","3"],"bid":904,"type":1} +{"cards":["2","9","3","3","J"],"bid":678,"type":1} +{"cards":["2","9","3","7","9"],"bid":972,"type":1} +{"cards":["2","9","9","8","3"],"bid":540,"type":1} +{"cards":["2","T","5","T","2"],"bid":759,"type":1} +{"cards":["2","T","8","A","T"],"bid":502,"type":1} +{"cards":["2","T","A","9","9"],"bid":406,"type":1} +{"cards":["2","J","2","5","4"],"bid":722,"type":1} +{"cards":["2","J","6","2","6"],"bid":732,"type":1} +{"cards":["2","J","8","4","8"],"bid":655,"type":1} +{"cards":["2","J","T","6","2"],"bid":398,"type":1} +{"cards":["2","J","A","A","9"],"bid":224,"type":1} +{"cards":["2","Q","T","2","K"],"bid":75,"type":1} +{"cards":["2","Q","Q","7","6"],"bid":510,"type":1} +{"cards":["2","K","5","J","K"],"bid":768,"type":1} +{"cards":["2","K","K","7","5"],"bid":339,"type":1} +{"cards":["2","A","A","2","J"],"bid":885,"type":1} +{"cards":["3","2","2","6","3"],"bid":314,"type":1} +{"cards":["3","2","J","3","2"],"bid":199,"type":1} +{"cards":["3","3","T","J","9"],"bid":414,"type":1} +{"cards":["3","3","J","8","K"],"bid":158,"type":1} +{"cards":["3","4","3","9","4"],"bid":963,"type":1} +{"cards":["3","4","5","3","2"],"bid":368,"type":1} +{"cards":["3","4","J","3","4"],"bid":419,"type":1} +{"cards":["3","5","2","K","2"],"bid":94,"type":1} +{"cards":["3","6","6","7","J"],"bid":791,"type":1} +{"cards":["3","6","J","6","A"],"bid":97,"type":1} +{"cards":["3","6","Q","4","3"],"bid":696,"type":1} +{"cards":["3","7","3","7","4"],"bid":627,"type":1} +{"cards":["3","7","5","3","5"],"bid":153,"type":1} +{"cards":["3","7","6","2","7"],"bid":873,"type":1} +{"cards":["3","7","Q","7","Q"],"bid":612,"type":1} +{"cards":["3","8","2","9","8"],"bid":643,"type":1} +{"cards":["3","8","4","6","6"],"bid":461,"type":1} +{"cards":["3","8","J","3","9"],"bid":922,"type":1} +{"cards":["3","9","4","3","J"],"bid":13,"type":1} +{"cards":["3","9","A","A","T"],"bid":424,"type":1} +{"cards":["3","T","7","T","7"],"bid":806,"type":1} +{"cards":["3","T","J","Q","T"],"bid":668,"type":1} +{"cards":["3","J","4","3","2"],"bid":786,"type":1} +{"cards":["3","J","4","3","J"],"bid":507,"type":1} +{"cards":["3","J","9","T","T"],"bid":629,"type":1} +{"cards":["3","J","T","3","7"],"bid":463,"type":1} +{"cards":["3","J","J","6","9"],"bid":154,"type":1} +{"cards":["3","Q","Q","8","9"],"bid":446,"type":1} +{"cards":["3","Q","K","3","J"],"bid":289,"type":1} +{"cards":["3","K","6","3","6"],"bid":623,"type":1} +{"cards":["3","K","8","K","8"],"bid":903,"type":1} +{"cards":["3","A","3","A","J"],"bid":583,"type":1} +{"cards":["3","A","7","7","3"],"bid":50,"type":1} +{"cards":["3","A","T","9","T"],"bid":897,"type":1} +{"cards":["4","2","T","2","Q"],"bid":108,"type":1} +{"cards":["4","4","J","K","8"],"bid":14,"type":1} +{"cards":["4","4","J","K","Q"],"bid":287,"type":1} +{"cards":["4","5","A","5","A"],"bid":886,"type":1} +{"cards":["4","6","5","2","6"],"bid":327,"type":1} +{"cards":["4","6","8","8","7"],"bid":704,"type":1} +{"cards":["4","6","T","5","T"],"bid":550,"type":1} +{"cards":["4","6","K","4","8"],"bid":336,"type":1} +{"cards":["4","8","2","8","A"],"bid":215,"type":1} +{"cards":["4","8","9","8","9"],"bid":825,"type":1} +{"cards":["4","8","J","2","4"],"bid":238,"type":1} +{"cards":["4","T","2","T","2"],"bid":186,"type":1} +{"cards":["4","T","6","T","8"],"bid":544,"type":1} +{"cards":["4","T","7","J","J"],"bid":563,"type":1} +{"cards":["4","J","6","6","K"],"bid":263,"type":1} +{"cards":["4","J","J","4","5"],"bid":32,"type":1} +{"cards":["4","Q","4","5","T"],"bid":180,"type":1} +{"cards":["4","Q","T","T","4"],"bid":138,"type":1} +{"cards":["4","K","9","3","K"],"bid":928,"type":1} +{"cards":["4","A","4","3","T"],"bid":653,"type":1} +{"cards":["4","A","A","4","2"],"bid":10,"type":1} +{"cards":["4","A","A","4","5"],"bid":61,"type":1} +{"cards":["5","2","2","5","3"],"bid":151,"type":1} +{"cards":["5","2","4","5","4"],"bid":443,"type":1} +{"cards":["5","2","6","5","6"],"bid":542,"type":1} +{"cards":["5","2","K","8","K"],"bid":453,"type":1} +{"cards":["5","3","5","J","Q"],"bid":411,"type":1} +{"cards":["5","3","7","K","K"],"bid":225,"type":1} +{"cards":["5","3","A","3","A"],"bid":763,"type":1} +{"cards":["5","4","3","4","Q"],"bid":232,"type":1} +{"cards":["5","4","4","K","5"],"bid":76,"type":1} +{"cards":["5","4","5","2","3"],"bid":935,"type":1} +{"cards":["5","5","J","2","K"],"bid":81,"type":1} +{"cards":["5","6","8","5","6"],"bid":92,"type":1} +{"cards":["5","8","J","8","5"],"bid":141,"type":1} +{"cards":["5","T","5","T","J"],"bid":221,"type":1} +{"cards":["5","J","4","4","5"],"bid":270,"type":1} +{"cards":["5","J","T","8","J"],"bid":741,"type":1} +{"cards":["5","J","K","8","8"],"bid":876,"type":1} +{"cards":["5","Q","5","Q","K"],"bid":249,"type":1} +{"cards":["5","Q","Q","2","5"],"bid":132,"type":1} +{"cards":["5","Q","Q","3","8"],"bid":349,"type":1} +{"cards":["5","K","5","K","9"],"bid":372,"type":1} +{"cards":["5","K","J","T","5"],"bid":672,"type":1} +{"cards":["5","K","K","J","5"],"bid":842,"type":1} +{"cards":["5","A","3","3","8"],"bid":86,"type":1} +{"cards":["6","2","2","T","7"],"bid":622,"type":1} +{"cards":["6","2","7","5","7"],"bid":575,"type":1} +{"cards":["6","2","J","2","K"],"bid":445,"type":1} +{"cards":["6","4","6","T","Q"],"bid":783,"type":1} +{"cards":["6","5","7","J","6"],"bid":291,"type":1} +{"cards":["6","6","3","7","Q"],"bid":53,"type":1} +{"cards":["6","6","J","2","K"],"bid":396,"type":1} +{"cards":["6","6","A","5","3"],"bid":793,"type":1} +{"cards":["6","7","3","7","Q"],"bid":641,"type":1} +{"cards":["6","7","T","3","3"],"bid":444,"type":1} +{"cards":["6","7","J","Q","7"],"bid":266,"type":1} +{"cards":["6","7","K","6","7"],"bid":952,"type":1} +{"cards":["6","8","5","8","5"],"bid":598,"type":1} +{"cards":["6","8","J","6","7"],"bid":391,"type":1} +{"cards":["6","8","J","8","6"],"bid":961,"type":1} +{"cards":["6","8","A","3","3"],"bid":169,"type":1} +{"cards":["6","9","6","J","Q"],"bid":631,"type":1} +{"cards":["6","9","9","3","K"],"bid":616,"type":1} +{"cards":["6","T","4","6","4"],"bid":36,"type":1} +{"cards":["6","T","6","T","K"],"bid":982,"type":1} +{"cards":["6","T","6","J","T"],"bid":915,"type":1} +{"cards":["6","T","7","4","7"],"bid":740,"type":1} +{"cards":["6","T","A","A","4"],"bid":286,"type":1} +{"cards":["6","J","4","4","7"],"bid":303,"type":1} +{"cards":["6","J","6","2","4"],"bid":635,"type":1} +{"cards":["6","J","9","J","6"],"bid":505,"type":1} +{"cards":["6","K","Q","6","J"],"bid":962,"type":1} +{"cards":["6","A","2","Q","Q"],"bid":942,"type":1} +{"cards":["7","2","4","A","A"],"bid":516,"type":1} +{"cards":["7","3","4","3","T"],"bid":829,"type":1} +{"cards":["7","4","A","4","7"],"bid":875,"type":1} +{"cards":["7","5","5","3","K"],"bid":352,"type":1} +{"cards":["7","6","T","T","A"],"bid":858,"type":1} +{"cards":["7","6","A","9","6"],"bid":947,"type":1} +{"cards":["7","7","4","J","9"],"bid":798,"type":1} +{"cards":["7","7","8","J","3"],"bid":751,"type":1} +{"cards":["7","7","Q","J","3"],"bid":587,"type":1} +{"cards":["7","8","8","7","6"],"bid":8,"type":1} +{"cards":["7","9","5","K","7"],"bid":723,"type":1} +{"cards":["7","9","7","A","9"],"bid":562,"type":1} +{"cards":["7","9","K","J","K"],"bid":77,"type":1} +{"cards":["7","J","6","9","6"],"bid":338,"type":1} +{"cards":["7","J","J","8","K"],"bid":708,"type":1} +{"cards":["7","J","K","8","8"],"bid":640,"type":1} +{"cards":["7","J","A","A","Q"],"bid":580,"type":1} +{"cards":["7","Q","2","2","8"],"bid":557,"type":1} +{"cards":["7","Q","J","3","J"],"bid":770,"type":1} +{"cards":["7","Q","J","9","7"],"bid":694,"type":1} +{"cards":["7","Q","A","7","2"],"bid":498,"type":1} +{"cards":["7","K","4","5","K"],"bid":567,"type":1} +{"cards":["7","K","7","K","3"],"bid":316,"type":1} +{"cards":["7","A","K","4","K"],"bid":201,"type":1} +{"cards":["7","A","A","7","J"],"bid":632,"type":1} +{"cards":["8","2","2","7","9"],"bid":283,"type":1} +{"cards":["8","2","2","J","8"],"bid":893,"type":1} +{"cards":["8","2","J","8","7"],"bid":89,"type":1} +{"cards":["8","3","8","T","6"],"bid":250,"type":1} +{"cards":["8","4","4","8","6"],"bid":178,"type":1} +{"cards":["8","4","4","8","J"],"bid":103,"type":1} +{"cards":["8","4","4","9","7"],"bid":217,"type":1} +{"cards":["8","4","8","4","7"],"bid":451,"type":1} +{"cards":["8","4","8","5","4"],"bid":864,"type":1} +{"cards":["8","5","5","3","4"],"bid":862,"type":1} +{"cards":["8","6","2","K","6"],"bid":369,"type":1} +{"cards":["8","6","9","9","J"],"bid":172,"type":1} +{"cards":["8","7","4","4","K"],"bid":727,"type":1} +{"cards":["8","7","Q","9","8"],"bid":155,"type":1} +{"cards":["8","8","4","J","T"],"bid":644,"type":1} +{"cards":["8","8","7","2","4"],"bid":551,"type":1} +{"cards":["8","8","T","J","6"],"bid":767,"type":1} +{"cards":["8","8","J","6","3"],"bid":588,"type":1} +{"cards":["8","8","Q","6","3"],"bid":274,"type":1} +{"cards":["8","8","K","Q","7"],"bid":955,"type":1} +{"cards":["8","T","6","4","6"],"bid":431,"type":1} +{"cards":["8","T","Q","3","Q"],"bid":252,"type":1} +{"cards":["8","T","K","T","2"],"bid":393,"type":1} +{"cards":["8","J","J","T","3"],"bid":775,"type":1} +{"cards":["8","J","Q","Q","2"],"bid":383,"type":1} +{"cards":["8","Q","4","7","8"],"bid":409,"type":1} +{"cards":["8","Q","8","6","7"],"bid":574,"type":1} +{"cards":["8","Q","8","Q","7"],"bid":62,"type":1} +{"cards":["8","Q","Q","8","3"],"bid":992,"type":1} +{"cards":["8","Q","Q","J","8"],"bid":792,"type":1} +{"cards":["8","Q","A","2","A"],"bid":427,"type":1} +{"cards":["8","K","4","Q","8"],"bid":910,"type":1} +{"cards":["8","K","6","8","J"],"bid":839,"type":1} +{"cards":["8","K","K","2","Q"],"bid":317,"type":1} +{"cards":["8","K","K","8","7"],"bid":670,"type":1} +{"cards":["8","A","A","3","8"],"bid":689,"type":1} +{"cards":["8","A","A","6","Q"],"bid":5,"type":1} +{"cards":["9","2","J","9","2"],"bid":710,"type":1} +{"cards":["9","3","J","7","9"],"bid":100,"type":1} +{"cards":["9","4","2","4","7"],"bid":146,"type":1} +{"cards":["9","4","3","5","9"],"bid":140,"type":1} +{"cards":["9","4","9","4","J"],"bid":105,"type":1} +{"cards":["9","4","9","J","5"],"bid":473,"type":1} +{"cards":["9","4","Q","Q","9"],"bid":415,"type":1} +{"cards":["9","5","7","5","2"],"bid":486,"type":1} +{"cards":["9","6","9","6","J"],"bid":264,"type":1} +{"cards":["9","7","2","7","9"],"bid":95,"type":1} +{"cards":["9","8","J","7","7"],"bid":371,"type":1} +{"cards":["9","9","3","K","A"],"bid":185,"type":1} +{"cards":["9","9","7","K","6"],"bid":329,"type":1} +{"cards":["9","9","8","K","7"],"bid":642,"type":1} +{"cards":["9","T","9","4","T"],"bid":609,"type":1} +{"cards":["9","J","8","6","6"],"bid":565,"type":1} +{"cards":["9","J","Q","9","Q"],"bid":578,"type":1} +{"cards":["9","J","Q","T","T"],"bid":832,"type":1} +{"cards":["9","Q","J","Q","A"],"bid":725,"type":1} +{"cards":["9","K","2","2","9"],"bid":388,"type":1} +{"cards":["9","K","2","K","4"],"bid":161,"type":1} +{"cards":["9","K","6","9","J"],"bid":145,"type":1} +{"cards":["9","K","6","K","9"],"bid":448,"type":1} +{"cards":["9","K","K","Q","J"],"bid":490,"type":1} +{"cards":["9","A","2","J","9"],"bid":191,"type":1} +{"cards":["9","A","9","4","K"],"bid":193,"type":1} +{"cards":["9","A","T","J","T"],"bid":892,"type":1} +{"cards":["9","A","Q","Q","4"],"bid":729,"type":1} +{"cards":["9","A","Q","A","Q"],"bid":594,"type":1} +{"cards":["9","A","A","3","J"],"bid":183,"type":1} +{"cards":["T","3","2","4","2"],"bid":835,"type":1} +{"cards":["T","3","T","3","J"],"bid":63,"type":1} +{"cards":["T","3","T","4","3"],"bid":17,"type":1} +{"cards":["T","4","2","4","6"],"bid":566,"type":1} +{"cards":["T","4","3","6","T"],"bid":605,"type":1} +{"cards":["T","4","J","T","4"],"bid":677,"type":1} +{"cards":["T","5","5","2","K"],"bid":251,"type":1} +{"cards":["T","5","8","8","Q"],"bid":70,"type":1} +{"cards":["T","5","Q","4","5"],"bid":38,"type":1} +{"cards":["T","6","3","3","T"],"bid":208,"type":1} +{"cards":["T","7","A","T","A"],"bid":620,"type":1} +{"cards":["T","8","2","8","T"],"bid":933,"type":1} +{"cards":["T","9","3","8","8"],"bid":902,"type":1} +{"cards":["T","T","3","J","5"],"bid":192,"type":1} +{"cards":["T","T","7","9","4"],"bid":539,"type":1} +{"cards":["T","T","J","7","Q"],"bid":834,"type":1} +{"cards":["T","J","A","2","J"],"bid":509,"type":1} +{"cards":["T","Q","7","T","2"],"bid":206,"type":1} +{"cards":["T","Q","J","9","Q"],"bid":645,"type":1} +{"cards":["T","K","4","7","T"],"bid":166,"type":1} +{"cards":["T","A","5","A","T"],"bid":292,"type":1} +{"cards":["T","A","T","2","6"],"bid":715,"type":1} +{"cards":["T","A","A","J","T"],"bid":67,"type":1} +{"cards":["J","2","8","5","8"],"bid":636,"type":1} +{"cards":["J","2","K","T","2"],"bid":649,"type":1} +{"cards":["J","3","6","5","5"],"bid":924,"type":1} +{"cards":["J","3","9","9","3"],"bid":719,"type":1} +{"cards":["J","3","T","T","8"],"bid":34,"type":1} +{"cards":["J","3","J","8","7"],"bid":88,"type":1} +{"cards":["J","3","A","4","A"],"bid":124,"type":1} +{"cards":["J","4","3","K","4"],"bid":851,"type":1} +{"cards":["J","4","K","K","7"],"bid":706,"type":1} +{"cards":["J","5","3","5","3"],"bid":546,"type":1} +{"cards":["J","5","8","3","5"],"bid":817,"type":1} +{"cards":["J","5","9","3","5"],"bid":506,"type":1} +{"cards":["J","5","9","9","3"],"bid":860,"type":1} +{"cards":["J","5","T","8","8"],"bid":789,"type":1} +{"cards":["J","5","J","9","5"],"bid":695,"type":1} +{"cards":["J","6","4","8","8"],"bid":634,"type":1} +{"cards":["J","6","A","J","7"],"bid":385,"type":1} +{"cards":["J","7","K","6","J"],"bid":511,"type":1} +{"cards":["J","8","4","7","7"],"bid":674,"type":1} +{"cards":["J","8","4","7","8"],"bid":489,"type":1} +{"cards":["J","8","9","4","8"],"bid":267,"type":1} +{"cards":["J","8","9","5","9"],"bid":375,"type":1} +{"cards":["J","8","9","J","T"],"bid":129,"type":1} +{"cards":["J","9","6","4","9"],"bid":389,"type":1} +{"cards":["J","9","6","J","4"],"bid":721,"type":1} +{"cards":["J","9","9","3","T"],"bid":745,"type":1} +{"cards":["J","9","J","Q","9"],"bid":475,"type":1} +{"cards":["J","9","J","A","5"],"bid":244,"type":1} +{"cards":["J","T","5","7","5"],"bid":603,"type":1} +{"cards":["J","T","9","7","7"],"bid":615,"type":1} +{"cards":["J","T","J","A","6"],"bid":744,"type":1} +{"cards":["J","T","Q","Q","T"],"bid":7,"type":1} +{"cards":["J","J","3","7","4"],"bid":450,"type":1} +{"cards":["J","Q","4","Q","T"],"bid":534,"type":1} +{"cards":["J","Q","K","K","J"],"bid":648,"type":1} +{"cards":["J","Q","K","K","A"],"bid":804,"type":1} +{"cards":["J","K","9","4","J"],"bid":524,"type":1} +{"cards":["J","A","2","2","8"],"bid":782,"type":1} +{"cards":["J","A","4","J","4"],"bid":130,"type":1} +{"cards":["J","A","T","A","9"],"bid":128,"type":1} +{"cards":["J","A","K","6","6"],"bid":28,"type":1} +{"cards":["Q","2","9","6","2"],"bid":468,"type":1} +{"cards":["Q","2","Q","3","9"],"bid":895,"type":1} +{"cards":["Q","2","A","A","T"],"bid":280,"type":1} +{"cards":["Q","3","9","9","Q"],"bid":116,"type":1} +{"cards":["Q","4","7","5","7"],"bid":856,"type":1} +{"cards":["Q","4","A","4","5"],"bid":236,"type":1} +{"cards":["Q","5","5","7","Q"],"bid":691,"type":1} +{"cards":["Q","5","5","K","3"],"bid":527,"type":1} +{"cards":["Q","5","J","5","Q"],"bid":761,"type":1} +{"cards":["Q","7","T","T","7"],"bid":68,"type":1} +{"cards":["Q","7","A","7","J"],"bid":218,"type":1} +{"cards":["Q","8","2","2","Q"],"bid":954,"type":1} +{"cards":["Q","8","3","J","Q"],"bid":334,"type":1} +{"cards":["Q","9","9","2","5"],"bid":630,"type":1} +{"cards":["Q","T","3","J","3"],"bid":91,"type":1} +{"cards":["Q","T","5","Q","5"],"bid":879,"type":1} +{"cards":["Q","T","J","7","7"],"bid":355,"type":1} +{"cards":["Q","T","A","6","T"],"bid":213,"type":1} +{"cards":["Q","J","2","2","Q"],"bid":85,"type":1} +{"cards":["Q","J","8","8","5"],"bid":899,"type":1} +{"cards":["Q","J","T","Q","2"],"bid":261,"type":1} +{"cards":["Q","J","K","A","A"],"bid":568,"type":1} +{"cards":["Q","Q","4","K","3"],"bid":253,"type":1} +{"cards":["Q","K","9","K","9"],"bid":235,"type":1} +{"cards":["Q","A","K","Q","T"],"bid":925,"type":1} +{"cards":["Q","A","K","A","8"],"bid":367,"type":1} +{"cards":["K","2","2","J","Q"],"bid":941,"type":1} +{"cards":["K","4","2","K","4"],"bid":402,"type":1} +{"cards":["K","4","3","3","4"],"bid":2,"type":1} +{"cards":["K","4","9","4","9"],"bid":442,"type":1} +{"cards":["K","5","9","5","3"],"bid":452,"type":1} +{"cards":["K","6","4","6","4"],"bid":381,"type":1} +{"cards":["K","6","5","5","3"],"bid":54,"type":1} +{"cards":["K","7","3","7","3"],"bid":484,"type":1} +{"cards":["K","7","7","K","J"],"bid":276,"type":1} +{"cards":["K","8","T","8","7"],"bid":260,"type":1} +{"cards":["K","9","9","2","8"],"bid":65,"type":1} +{"cards":["K","9","T","T","K"],"bid":392,"type":1} +{"cards":["K","9","J","K","A"],"bid":711,"type":1} +{"cards":["K","9","K","9","J"],"bid":204,"type":1} +{"cards":["K","T","Q","K","J"],"bid":891,"type":1} +{"cards":["K","J","6","2","K"],"bid":288,"type":1} +{"cards":["K","J","A","K","6"],"bid":753,"type":1} +{"cards":["K","J","A","A","K"],"bid":110,"type":1} +{"cards":["K","Q","6","6","Q"],"bid":590,"type":1} +{"cards":["K","Q","6","6","K"],"bid":525,"type":1} +{"cards":["K","Q","6","T","6"],"bid":360,"type":1} +{"cards":["K","Q","9","3","Q"],"bid":114,"type":1} +{"cards":["K","Q","Q","K","A"],"bid":500,"type":1} +{"cards":["K","K","7","Q","J"],"bid":683,"type":1} +{"cards":["K","K","9","8","5"],"bid":42,"type":1} +{"cards":["K","K","J","2","7"],"bid":330,"type":1} +{"cards":["K","K","A","6","7"],"bid":794,"type":1} +{"cards":["K","A","4","T","K"],"bid":650,"type":1} +{"cards":["K","A","T","J","T"],"bid":659,"type":1} +{"cards":["A","2","2","J","K"],"bid":248,"type":1} +{"cards":["A","2","2","A","6"],"bid":269,"type":1} +{"cards":["A","2","2","A","9"],"bid":974,"type":1} +{"cards":["A","2","K","9","2"],"bid":123,"type":1} +{"cards":["A","3","T","K","K"],"bid":772,"type":1} +{"cards":["A","3","J","3","2"],"bid":986,"type":1} +{"cards":["A","3","K","J","A"],"bid":503,"type":1} +{"cards":["A","4","A","T","4"],"bid":993,"type":1} +{"cards":["A","5","8","A","2"],"bid":481,"type":1} +{"cards":["A","5","Q","8","5"],"bid":553,"type":1} +{"cards":["A","7","9","7","T"],"bid":663,"type":1} +{"cards":["A","8","6","4","6"],"bid":135,"type":1} +{"cards":["A","8","T","T","8"],"bid":914,"type":1} +{"cards":["A","9","T","T","5"],"bid":560,"type":1} +{"cards":["A","9","T","K","K"],"bid":39,"type":1} +{"cards":["A","9","J","A","J"],"bid":599,"type":1} +{"cards":["A","T","T","4","7"],"bid":676,"type":1} +{"cards":["A","T","J","T","8"],"bid":771,"type":1} +{"cards":["A","T","K","T","K"],"bid":846,"type":1} +{"cards":["A","J","2","A","K"],"bid":413,"type":1} +{"cards":["A","J","A","7","3"],"bid":796,"type":1} +{"cards":["A","Q","4","4","9"],"bid":921,"type":1} +{"cards":["A","Q","4","K","A"],"bid":422,"type":1} +{"cards":["A","K","Q","Q","5"],"bid":827,"type":1} +{"cards":["2","2","9","5","9"],"bid":426,"type":2} +{"cards":["2","2","J","9","J"],"bid":60,"type":2} +{"cards":["3","3","2","9","9"],"bid":652,"type":2} +{"cards":["3","3","4","8","4"],"bid":401,"type":2} +{"cards":["3","3","8","Q","Q"],"bid":530,"type":2} +{"cards":["3","3","K","K","5"],"bid":308,"type":2} +{"cards":["3","6","3","4","4"],"bid":127,"type":2} +{"cards":["4","A","4","5","5"],"bid":49,"type":2} +{"cards":["5","7","7","T","T"],"bid":735,"type":2} +{"cards":["6","2","6","7","7"],"bid":797,"type":2} +{"cards":["6","6","T","9","T"],"bid":519,"type":2} +{"cards":["6","6","Q","4","4"],"bid":405,"type":2} +{"cards":["6","J","6","5","5"],"bid":929,"type":2} +{"cards":["7","7","9","T","T"],"bid":920,"type":2} +{"cards":["7","A","A","9","9"],"bid":485,"type":2} +{"cards":["8","8","7","A","A"],"bid":699,"type":2} +{"cards":["8","8","9","J","9"],"bid":313,"type":2} +{"cards":["8","8","J","7","J"],"bid":975,"type":2} +{"cards":["8","8","K","J","K"],"bid":170,"type":2} +{"cards":["8","Q","Q","7","7"],"bid":774,"type":2} +{"cards":["8","A","A","Q","Q"],"bid":809,"type":2} +{"cards":["9","6","6","7","7"],"bid":477,"type":2} +{"cards":["9","9","5","3","3"],"bid":521,"type":2} +{"cards":["9","9","J","K","J"],"bid":437,"type":2} +{"cards":["T","T","2","4","4"],"bid":364,"type":2} +{"cards":["T","T","9","8","9"],"bid":277,"type":2} +{"cards":["J","3","J","A","A"],"bid":324,"type":2} +{"cards":["J","T","T","K","K"],"bid":824,"type":2} +{"cards":["J","T","J","A","A"],"bid":826,"type":2} +{"cards":["J","J","8","8","2"],"bid":318,"type":2} +{"cards":["Q","3","Q","J","J"],"bid":470,"type":2} +{"cards":["Q","6","Q","9","9"],"bid":800,"type":2} +{"cards":["Q","Q","3","3","J"],"bid":117,"type":2} +{"cards":["Q","Q","4","3","3"],"bid":520,"type":2} +{"cards":["Q","Q","6","6","8"],"bid":870,"type":2} +{"cards":["Q","Q","K","4","K"],"bid":16,"type":2} +{"cards":["Q","Q","K","K","3"],"bid":818,"type":2} +{"cards":["Q","Q","A","T","T"],"bid":965,"type":2} +{"cards":["K","J","J","7","7"],"bid":658,"type":2} +{"cards":["K","A","K","9","9"],"bid":591,"type":2} +{"cards":["A","J","J","9","9"],"bid":621,"type":2} +{"cards":["A","J","A","Q","Q"],"bid":531,"type":2} +{"cards":["A","K","K","7","7"],"bid":256,"type":2} +{"cards":["A","A","8","2","2"],"bid":614,"type":2} +{"cards":["A","A","Q","7","Q"],"bid":989,"type":2} +{"cards":["2","2","2","7","9"],"bid":104,"type":3} +{"cards":["2","2","2","K","6"],"bid":861,"type":3} +{"cards":["2","2","3","4","2"],"bid":545,"type":3} +{"cards":["2","2","3","J","2"],"bid":900,"type":3} +{"cards":["2","2","7","7","7"],"bid":102,"type":3} +{"cards":["2","2","J","2","8"],"bid":639,"type":3} +{"cards":["2","2","Q","2","K"],"bid":637,"type":3} +{"cards":["2","2","A","2","J"],"bid":799,"type":3} +{"cards":["2","4","4","4","3"],"bid":344,"type":3} +{"cards":["2","4","4","J","4"],"bid":242,"type":3} +{"cards":["2","5","2","5","5"],"bid":913,"type":3} +{"cards":["2","5","5","2","2"],"bid":923,"type":3} +{"cards":["2","6","2","2","6"],"bid":940,"type":3} +{"cards":["2","6","2","6","6"],"bid":187,"type":3} +{"cards":["2","8","J","8","8"],"bid":315,"type":3} +{"cards":["2","9","2","2","T"],"bid":1000,"type":3} +{"cards":["2","9","9","2","9"],"bid":619,"type":3} +{"cards":["2","T","T","4","T"],"bid":162,"type":3} +{"cards":["2","T","Q","2","2"],"bid":987,"type":3} +{"cards":["2","J","J","2","J"],"bid":726,"type":3} +{"cards":["2","K","2","2","K"],"bid":377,"type":3} +{"cards":["3","2","3","2","3"],"bid":259,"type":3} +{"cards":["3","2","5","2","2"],"bid":684,"type":3} +{"cards":["3","3","3","T","J"],"bid":214,"type":3} +{"cards":["3","3","3","J","5"],"bid":872,"type":3} +{"cards":["3","3","8","3","8"],"bid":638,"type":3} +{"cards":["3","3","Q","Q","3"],"bid":471,"type":3} +{"cards":["3","3","A","J","3"],"bid":347,"type":3} +{"cards":["3","4","8","8","8"],"bid":326,"type":3} +{"cards":["3","5","Q","3","3"],"bid":58,"type":3} +{"cards":["3","6","3","3","6"],"bid":478,"type":3} +{"cards":["3","6","6","6","J"],"bid":845,"type":3} +{"cards":["3","7","3","3","5"],"bid":577,"type":3} +{"cards":["3","7","7","7","3"],"bid":602,"type":3} +{"cards":["3","7","8","8","8"],"bid":657,"type":3} +{"cards":["3","9","3","3","9"],"bid":911,"type":3} +{"cards":["3","T","T","T","3"],"bid":606,"type":3} +{"cards":["3","J","3","4","3"],"bid":840,"type":3} +{"cards":["3","K","7","7","7"],"bid":532,"type":3} +{"cards":["3","K","K","K","T"],"bid":703,"type":3} +{"cards":["3","A","3","7","3"],"bid":278,"type":3} +{"cards":["4","2","2","4","2"],"bid":226,"type":3} +{"cards":["4","2","4","4","2"],"bid":901,"type":3} +{"cards":["4","4","3","4","3"],"bid":999,"type":3} +{"cards":["4","4","4","7","K"],"bid":227,"type":3} +{"cards":["4","4","7","7","4"],"bid":957,"type":3} +{"cards":["4","4","8","6","4"],"bid":410,"type":3} +{"cards":["4","4","8","7","4"],"bid":357,"type":3} +{"cards":["4","4","J","K","4"],"bid":720,"type":3} +{"cards":["4","5","4","4","A"],"bid":680,"type":3} +{"cards":["4","5","6","6","6"],"bid":19,"type":3} +{"cards":["4","5","J","5","5"],"bid":80,"type":3} +{"cards":["4","6","6","4","4"],"bid":331,"type":3} +{"cards":["4","7","4","4","5"],"bid":724,"type":3} +{"cards":["4","7","7","K","7"],"bid":26,"type":3} +{"cards":["4","8","8","4","4"],"bid":323,"type":3} +{"cards":["4","9","4","4","K"],"bid":492,"type":3} +{"cards":["4","T","2","4","4"],"bid":589,"type":3} +{"cards":["4","J","8","4","4"],"bid":359,"type":3} +{"cards":["4","Q","2","Q","Q"],"bid":548,"type":3} +{"cards":["4","K","6","K","K"],"bid":310,"type":3} +{"cards":["4","K","J","K","K"],"bid":271,"type":3} +{"cards":["5","2","2","2","4"],"bid":55,"type":3} +{"cards":["5","3","3","3","9"],"bid":762,"type":3} +{"cards":["5","4","4","5","5"],"bid":570,"type":3} +{"cards":["5","5","2","5","8"],"bid":766,"type":3} +{"cards":["5","5","3","5","3"],"bid":926,"type":3} +{"cards":["5","5","3","5","T"],"bid":504,"type":3} +{"cards":["5","5","4","4","4"],"bid":403,"type":3} +{"cards":["5","5","4","5","8"],"bid":340,"type":3} +{"cards":["5","5","5","4","7"],"bid":728,"type":3} +{"cards":["5","5","5","7","Q"],"bid":841,"type":3} +{"cards":["5","5","8","5","8"],"bid":113,"type":3} +{"cards":["5","5","T","T","T"],"bid":647,"type":3} +{"cards":["5","6","Q","Q","Q"],"bid":149,"type":3} +{"cards":["5","7","7","7","5"],"bid":258,"type":3} +{"cards":["5","8","J","5","5"],"bid":625,"type":3} +{"cards":["5","8","A","5","5"],"bid":311,"type":3} +{"cards":["5","9","8","5","5"],"bid":906,"type":3} +{"cards":["5","9","9","9","5"],"bid":84,"type":3} +{"cards":["5","9","9","9","7"],"bid":787,"type":3} +{"cards":["5","T","T","5","5"],"bid":990,"type":3} +{"cards":["5","J","5","9","5"],"bid":859,"type":3} +{"cards":["5","Q","5","5","A"],"bid":749,"type":3} +{"cards":["5","K","K","5","K"],"bid":535,"type":3} +{"cards":["5","K","K","J","K"],"bid":265,"type":3} +{"cards":["5","A","5","5","J"],"bid":48,"type":3} +{"cards":["6","3","6","4","6"],"bid":293,"type":3} +{"cards":["6","4","4","4","3"],"bid":370,"type":3} +{"cards":["6","4","6","6","J"],"bid":849,"type":3} +{"cards":["6","5","6","8","6"],"bid":298,"type":3} +{"cards":["6","6","3","6","3"],"bid":52,"type":3} +{"cards":["6","6","4","6","4"],"bid":522,"type":3} +{"cards":["6","6","6","4","T"],"bid":747,"type":3} +{"cards":["6","6","8","6","8"],"bid":572,"type":3} +{"cards":["6","6","J","J","6"],"bid":210,"type":3} +{"cards":["6","6","Q","6","Q"],"bid":131,"type":3} +{"cards":["6","6","A","6","A"],"bid":312,"type":3} +{"cards":["6","7","J","7","7"],"bid":203,"type":3} +{"cards":["6","8","K","K","K"],"bid":469,"type":3} +{"cards":["6","9","6","6","3"],"bid":296,"type":3} +{"cards":["6","9","6","6","9"],"bid":272,"type":3} +{"cards":["6","9","Q","6","6"],"bid":690,"type":3} +{"cards":["6","9","A","A","A"],"bid":430,"type":3} +{"cards":["6","J","8","6","6"],"bid":717,"type":3} +{"cards":["6","Q","5","6","6"],"bid":460,"type":3} +{"cards":["6","K","Q","K","K"],"bid":584,"type":3} +{"cards":["6","A","8","8","8"],"bid":404,"type":3} +{"cards":["6","A","A","A","6"],"bid":843,"type":3} +{"cards":["7","3","3","7","3"],"bid":107,"type":3} +{"cards":["7","4","A","4","4"],"bid":945,"type":3} +{"cards":["7","5","9","7","7"],"bid":328,"type":3} +{"cards":["7","5","J","7","7"],"bid":518,"type":3} +{"cards":["7","6","6","7","7"],"bid":373,"type":3} +{"cards":["7","7","2","7","6"],"bid":382,"type":3} +{"cards":["7","7","7","2","J"],"bid":853,"type":3} +{"cards":["7","7","7","5","4"],"bid":848,"type":3} +{"cards":["7","7","7","J","Q"],"bid":188,"type":3} +{"cards":["7","7","9","7","9"],"bid":222,"type":3} +{"cards":["7","7","J","7","3"],"bid":617,"type":3} +{"cards":["7","7","A","A","A"],"bid":666,"type":3} +{"cards":["7","T","7","7","3"],"bid":731,"type":3} +{"cards":["7","T","7","7","6"],"bid":712,"type":3} +{"cards":["7","T","7","J","7"],"bid":44,"type":3} +{"cards":["7","Q","7","Q","7"],"bid":537,"type":3} +{"cards":["7","A","A","7","7"],"bid":881,"type":3} +{"cards":["8","2","8","9","8"],"bid":883,"type":3} +{"cards":["8","3","3","3","K"],"bid":361,"type":3} +{"cards":["8","4","4","8","8"],"bid":234,"type":3} +{"cards":["8","4","8","5","8"],"bid":788,"type":3} +{"cards":["8","7","7","7","8"],"bid":499,"type":3} +{"cards":["8","7","7","8","8"],"bid":384,"type":3} +{"cards":["8","8","4","T","8"],"bid":526,"type":3} +{"cards":["8","8","5","5","8"],"bid":46,"type":3} +{"cards":["8","8","8","T","7"],"bid":491,"type":3} +{"cards":["8","8","9","8","9"],"bid":418,"type":3} +{"cards":["8","8","Q","Q","Q"],"bid":828,"type":3} +{"cards":["8","8","K","8","5"],"bid":593,"type":3} +{"cards":["8","T","T","8","8"],"bid":41,"type":3} +{"cards":["8","Q","Q","8","8"],"bid":660,"type":3} +{"cards":["8","K","J","8","8"],"bid":919,"type":3} +{"cards":["9","2","2","2","4"],"bid":121,"type":3} +{"cards":["9","3","3","3","8"],"bid":836,"type":3} +{"cards":["9","3","9","9","J"],"bid":953,"type":3} +{"cards":["9","4","9","9","T"],"bid":211,"type":3} +{"cards":["9","6","4","4","4"],"bid":179,"type":3} +{"cards":["9","7","4","7","7"],"bid":332,"type":3} +{"cards":["9","7","Q","Q","Q"],"bid":337,"type":3} +{"cards":["9","8","9","9","8"],"bid":912,"type":3} +{"cards":["9","8","9","T","9"],"bid":529,"type":3} +{"cards":["9","9","3","9","5"],"bid":209,"type":3} +{"cards":["9","9","3","9","8"],"bid":946,"type":3} +{"cards":["9","9","6","4","9"],"bid":1,"type":3} +{"cards":["9","9","7","4","9"],"bid":275,"type":3} +{"cards":["9","9","8","A","9"],"bid":561,"type":3} +{"cards":["9","9","9","J","A"],"bid":865,"type":3} +{"cards":["9","9","9","K","2"],"bid":21,"type":3} +{"cards":["9","9","J","9","2"],"bid":869,"type":3} +{"cards":["9","J","9","5","9"],"bid":493,"type":3} +{"cards":["9","J","9","9","T"],"bid":705,"type":3} +{"cards":["9","A","A","J","A"],"bid":284,"type":3} +{"cards":["9","A","A","A","2"],"bid":343,"type":3} +{"cards":["9","A","A","A","3"],"bid":374,"type":3} +{"cards":["T","2","2","2","T"],"bid":87,"type":3} +{"cards":["T","4","A","4","4"],"bid":23,"type":3} +{"cards":["T","6","6","6","8"],"bid":822,"type":3} +{"cards":["T","6","6","J","6"],"bid":184,"type":3} +{"cards":["T","7","T","T","7"],"bid":407,"type":3} +{"cards":["T","T","3","T","9"],"bid":159,"type":3} +{"cards":["T","T","T","9","J"],"bid":189,"type":3} +{"cards":["T","T","T","J","5"],"bid":122,"type":3} +{"cards":["T","T","Q","T","Q"],"bid":35,"type":3} +{"cards":["T","Q","6","T","T"],"bid":541,"type":3} +{"cards":["T","Q","8","T","T"],"bid":803,"type":3} +{"cards":["T","K","J","T","T"],"bid":386,"type":3} +{"cards":["T","A","A","J","A"],"bid":223,"type":3} +{"cards":["J","2","J","3","J"],"bid":118,"type":3} +{"cards":["J","4","5","4","4"],"bid":205,"type":3} +{"cards":["J","4","J","4","4"],"bid":171,"type":3} +{"cards":["J","5","5","J","5"],"bid":281,"type":3} +{"cards":["J","5","5","Q","5"],"bid":714,"type":3} +{"cards":["J","7","7","7","4"],"bid":687,"type":3} +{"cards":["J","7","7","7","K"],"bid":930,"type":3} +{"cards":["J","8","5","8","8"],"bid":142,"type":3} +{"cards":["J","8","7","8","8"],"bid":979,"type":3} +{"cards":["J","8","9","8","8"],"bid":884,"type":3} +{"cards":["J","8","A","A","A"],"bid":667,"type":3} +{"cards":["J","J","2","2","2"],"bid":462,"type":3} +{"cards":["J","J","3","3","3"],"bid":176,"type":3} +{"cards":["J","J","7","7","7"],"bid":71,"type":3} +{"cards":["J","J","9","9","9"],"bid":549,"type":3} +{"cards":["J","J","A","J","T"],"bid":754,"type":3} +{"cards":["J","J","A","A","A"],"bid":855,"type":3} +{"cards":["J","Q","Q","3","Q"],"bid":11,"type":3} +{"cards":["J","K","2","2","2"],"bid":397,"type":3} +{"cards":["Q","2","2","2","A"],"bid":126,"type":3} +{"cards":["Q","3","6","6","6"],"bid":119,"type":3} +{"cards":["Q","3","Q","3","Q"],"bid":707,"type":3} +{"cards":["Q","6","J","6","6"],"bid":168,"type":3} +{"cards":["Q","6","Q","Q","6"],"bid":852,"type":3} +{"cards":["Q","7","K","7","7"],"bid":991,"type":3} +{"cards":["Q","8","Q","Q","7"],"bid":45,"type":3} +{"cards":["Q","T","9","9","9"],"bid":669,"type":3} +{"cards":["Q","T","T","7","T"],"bid":335,"type":3} +{"cards":["Q","T","Q","Q","T"],"bid":164,"type":3} +{"cards":["Q","J","Q","2","Q"],"bid":777,"type":3} +{"cards":["Q","J","Q","Q","J"],"bid":918,"type":3} +{"cards":["Q","Q","2","Q","2"],"bid":390,"type":3} +{"cards":["Q","Q","5","5","5"],"bid":596,"type":3} +{"cards":["Q","Q","Q","3","A"],"bid":820,"type":3} +{"cards":["Q","Q","Q","4","6"],"bid":408,"type":3} +{"cards":["Q","Q","Q","8","3"],"bid":758,"type":3} +{"cards":["Q","Q","Q","T","8"],"bid":607,"type":3} +{"cards":["Q","Q","Q","A","7"],"bid":27,"type":3} +{"cards":["K","2","2","8","2"],"bid":552,"type":3} +{"cards":["K","2","K","2","K"],"bid":150,"type":3} +{"cards":["K","2","A","A","A"],"bid":514,"type":3} +{"cards":["K","4","K","7","K"],"bid":333,"type":3} +{"cards":["K","5","7","7","7"],"bid":833,"type":3} +{"cards":["K","6","K","K","J"],"bid":454,"type":3} +{"cards":["K","7","K","8","K"],"bid":24,"type":3} +{"cards":["K","8","8","3","8"],"bid":830,"type":3} +{"cards":["K","8","J","K","K"],"bid":351,"type":3} +{"cards":["K","8","Q","K","K"],"bid":981,"type":3} +{"cards":["K","8","K","5","K"],"bid":120,"type":3} +{"cards":["K","9","K","K","3"],"bid":756,"type":3} +{"cards":["K","T","K","T","K"],"bid":576,"type":3} +{"cards":["K","J","J","K","K"],"bid":611,"type":3} +{"cards":["K","K","4","K","4"],"bid":675,"type":3} +{"cards":["K","K","7","7","K"],"bid":301,"type":3} +{"cards":["K","K","8","8","8"],"bid":319,"type":3} +{"cards":["K","K","9","K","J"],"bid":254,"type":3} +{"cards":["K","K","J","K","T"],"bid":785,"type":3} +{"cards":["K","K","Q","K","7"],"bid":810,"type":3} +{"cards":["K","K","K","3","7"],"bid":994,"type":3} +{"cards":["K","K","K","6","T"],"bid":416,"type":3} +{"cards":["K","K","K","T","5"],"bid":441,"type":3} +{"cards":["A","2","2","A","2"],"bid":229,"type":3} +{"cards":["A","5","5","9","5"],"bid":262,"type":3} +{"cards":["A","5","A","K","A"],"bid":148,"type":3} +{"cards":["A","8","8","J","8"],"bid":757,"type":3} +{"cards":["A","T","T","A","A"],"bid":290,"type":3} +{"cards":["A","J","J","J","A"],"bid":697,"type":3} +{"cards":["A","J","A","6","A"],"bid":626,"type":3} +{"cards":["A","J","A","7","A"],"bid":874,"type":3} +{"cards":["A","Q","Q","A","Q"],"bid":779,"type":3} +{"cards":["A","Q","Q","A","A"],"bid":656,"type":3} +{"cards":["A","K","A","4","A"],"bid":198,"type":3} +{"cards":["A","A","2","A","8"],"bid":73,"type":3} +{"cards":["A","A","3","J","A"],"bid":51,"type":3} +{"cards":["A","A","4","A","4"],"bid":907,"type":3} +{"cards":["A","A","7","A","8"],"bid":358,"type":3} +{"cards":["A","A","8","8","A"],"bid":813,"type":3} +{"cards":["A","A","J","2","A"],"bid":165,"type":3} +{"cards":["A","A","J","K","A"],"bid":182,"type":3} +{"cards":["A","A","A","2","3"],"bid":838,"type":3} +{"cards":["A","A","A","K","Q"],"bid":376,"type":3} +{"cards":["6","6","6","7","7"],"bid":346,"type":4} +{"cards":["8","8","8","A","A"],"bid":790,"type":4} +{"cards":["9","9","9","3","3"],"bid":433,"type":4} +{"cards":["9","9","9","7","7"],"bid":701,"type":4} +{"cards":["T","T","T","J","J"],"bid":693,"type":4} +{"cards":["Q","Q","Q","K","K"],"bid":931,"type":4} +{"cards":["K","K","K","A","A"],"bid":175,"type":4} +{"cards":["2","2","2","2","6"],"bid":781,"type":5} +{"cards":["2","2","2","3","2"],"bid":9,"type":5} +{"cards":["2","2","A","2","2"],"bid":207,"type":5} +{"cards":["2","3","3","3","3"],"bid":378,"type":5} +{"cards":["2","4","2","2","2"],"bid":807,"type":5} +{"cards":["2","7","2","2","2"],"bid":305,"type":5} +{"cards":["2","J","2","2","2"],"bid":354,"type":5} +{"cards":["2","J","J","J","J"],"bid":765,"type":5} +{"cards":["2","Q","Q","Q","Q"],"bid":194,"type":5} +{"cards":["3","3","3","3","5"],"bid":400,"type":5} +{"cards":["3","3","3","3","A"],"bid":472,"type":5} +{"cards":["3","3","3","Q","3"],"bid":496,"type":5} +{"cards":["3","3","9","3","3"],"bid":882,"type":5} +{"cards":["3","6","6","6","6"],"bid":646,"type":5} +{"cards":["3","7","3","3","3"],"bid":802,"type":5} +{"cards":["3","9","9","9","9"],"bid":857,"type":5} +{"cards":["3","J","3","3","3"],"bid":681,"type":5} +{"cards":["4","4","4","2","4"],"bid":228,"type":5} +{"cards":["4","4","4","6","4"],"bid":517,"type":5} +{"cards":["4","4","4","7","4"],"bid":240,"type":5} +{"cards":["4","4","4","8","4"],"bid":212,"type":5} +{"cards":["4","4","4","J","4"],"bid":998,"type":5} +{"cards":["4","Q","4","4","4"],"bid":362,"type":5} +{"cards":["5","5","5","6","5"],"bid":342,"type":5} +{"cards":["5","5","5","J","5"],"bid":592,"type":5} +{"cards":["5","5","5","K","5"],"bid":976,"type":5} +{"cards":["5","7","5","5","5"],"bid":482,"type":5} +{"cards":["5","T","5","5","5"],"bid":938,"type":5} +{"cards":["5","A","A","A","A"],"bid":949,"type":5} +{"cards":["6","5","6","6","6"],"bid":111,"type":5} +{"cards":["6","6","4","6","6"],"bid":421,"type":5} +{"cards":["6","6","6","6","T"],"bid":197,"type":5} +{"cards":["6","6","6","6","K"],"bid":137,"type":5} +{"cards":["6","6","6","6","A"],"bid":480,"type":5} +{"cards":["6","6","6","9","6"],"bid":66,"type":5} +{"cards":["6","6","6","J","6"],"bid":479,"type":5} +{"cards":["6","7","6","6","6"],"bid":662,"type":5} +{"cards":["6","8","6","6","6"],"bid":423,"type":5} +{"cards":["6","Q","6","6","6"],"bid":438,"type":5} +{"cards":["7","3","7","7","7"],"bid":571,"type":5} +{"cards":["7","7","5","7","7"],"bid":22,"type":5} +{"cards":["7","7","6","7","7"],"bid":698,"type":5} +{"cards":["7","7","7","4","7"],"bid":174,"type":5} +{"cards":["7","7","7","T","7"],"bid":769,"type":5} +{"cards":["7","J","7","7","7"],"bid":736,"type":5} +{"cards":["8","5","5","5","5"],"bid":784,"type":5} +{"cards":["8","8","2","8","8"],"bid":995,"type":5} +{"cards":["8","8","8","7","8"],"bid":18,"type":5} +{"cards":["8","8","8","8","3"],"bid":702,"type":5} +{"cards":["8","8","8","8","9"],"bid":937,"type":5} +{"cards":["8","8","8","Q","8"],"bid":863,"type":5} +{"cards":["8","8","8","K","8"],"bid":654,"type":5} +{"cards":["8","8","J","8","8"],"bid":379,"type":5} +{"cards":["8","8","A","8","8"],"bid":597,"type":5} +{"cards":["8","9","9","9","9"],"bid":96,"type":5} +{"cards":["8","J","J","J","J"],"bid":610,"type":5} +{"cards":["8","Q","Q","Q","Q"],"bid":101,"type":5} +{"cards":["9","4","9","9","9"],"bid":306,"type":5} +{"cards":["9","5","5","5","5"],"bid":307,"type":5} +{"cards":["9","7","7","7","7"],"bid":776,"type":5} +{"cards":["9","9","9","5","9"],"bid":867,"type":5} +{"cards":["9","9","T","9","9"],"bid":948,"type":5} +{"cards":["9","9","J","9","9"],"bid":69,"type":5} +{"cards":["9","K","9","9","9"],"bid":573,"type":5} +{"cards":["9","A","9","9","9"],"bid":916,"type":5} +{"cards":["T","4","4","4","4"],"bid":533,"type":5} +{"cards":["T","6","T","T","T"],"bid":932,"type":5} +{"cards":["T","8","8","8","8"],"bid":12,"type":5} +{"cards":["T","9","T","T","T"],"bid":195,"type":5} +{"cards":["T","T","T","7","T"],"bid":356,"type":5} +{"cards":["T","T","T","T","J"],"bid":399,"type":5} +{"cards":["Q","2","2","2","2"],"bid":604,"type":5} +{"cards":["Q","5","Q","Q","Q"],"bid":125,"type":5} +{"cards":["Q","9","9","9","9"],"bid":6,"type":5} +{"cards":["Q","T","Q","Q","Q"],"bid":299,"type":5} +{"cards":["Q","J","Q","Q","Q"],"bid":434,"type":5} +{"cards":["Q","Q","Q","6","Q"],"bid":47,"type":5} +{"cards":["Q","Q","Q","9","Q"],"bid":350,"type":5} +{"cards":["Q","Q","Q","Q","7"],"bid":808,"type":5} +{"cards":["Q","Q","Q","Q","K"],"bid":585,"type":5} +{"cards":["Q","K","K","K","K"],"bid":247,"type":5} +{"cards":["Q","A","A","A","A"],"bid":958,"type":5} +{"cards":["K","3","3","3","3"],"bid":25,"type":5} +{"cards":["K","4","4","4","4"],"bid":868,"type":5} +{"cards":["K","4","K","K","K"],"bid":980,"type":5} +{"cards":["K","8","K","K","K"],"bid":56,"type":5} +{"cards":["K","T","T","T","T"],"bid":366,"type":5} +{"cards":["K","T","K","K","K"],"bid":83,"type":5} +{"cards":["K","J","K","K","K"],"bid":190,"type":5} +{"cards":["K","K","9","K","K"],"bid":831,"type":5} +{"cards":["K","K","K","3","K"],"bid":896,"type":5} +{"cards":["K","K","K","K","2"],"bid":664,"type":5} +{"cards":["K","K","K","K","7"],"bid":773,"type":5} +{"cards":["K","K","A","K","K"],"bid":579,"type":5} +{"cards":["A","2","A","A","A"],"bid":219,"type":5} +{"cards":["A","3","A","A","A"],"bid":216,"type":5} +{"cards":["A","A","7","A","A"],"bid":157,"type":5} +{"cards":["A","A","A","K","A"],"bid":673,"type":5} +{"cards":["A","A","A","A","4"],"bid":488,"type":5} +{"cards":["A","A","A","A","9"],"bid":387,"type":5} +{"cards":["A","A","A","A","J"],"bid":738,"type":5} +{"cards":["J","J","J","J","J"],"bid":440,"type":6} \ No newline at end of file diff --git a/helper.js b/helper.js new file mode 100644 index 0000000..43fe726 --- /dev/null +++ b/helper.js @@ -0,0 +1,41 @@ +import { readFile, access } from "fs/promises"; + +export async function loadData({ day, dataType = "sample" }) { + const data = await readFile(`./${day}/${dataType}.txt`, "utf-8"); + return data.split("\n"); +} + +export async function fileExists(filename) { + try { + await access(filename); + return true; + } catch (err) { + return false; + } +} + +export async function argsChecker(args) { + if (args.length === 0) { + console.log("Please provide a day number"); + process.exit(1); + } + + let dataType = "input"; + if (args[1] === "sample") { + dataType = "sample"; + } + + return { dataType }; +} + +export async function partRunner({ part, input }) { + console.time(part.name); + const result = await part({ input }); + console.timeEnd(part.name); + console.log(result); + return result; +} + +export function isNumeric(n) { + return !isNaN(parseFloat(n)) && isFinite(n); +} diff --git a/index.js b/index.js new file mode 100644 index 0000000..305bbc9 --- /dev/null +++ b/index.js @@ -0,0 +1,22 @@ +import { fileExists, argsChecker, loadData, partRunner } from "./helper.js"; +const args = process.argv.slice(2); + +const { dataType } = await argsChecker(args); + +const dayFile = `day${args[0]}`; + +if (!(await fileExists(`./${dayFile}/index.js`))) { + console.log(`Day ${args[0]} does not exist`); + process.exit(1); +} + +const { part1, part2 } = await import(`./${dayFile}/index.js`); +const data = await loadData({ day: dayFile, dataType }); + +await partRunner({ part: part1, input: data }); + +if (dataType === "sample" && (await fileExists(`./${dayFile}/sample2.txt`))) { + await partRunner({ part: part2, input: await loadData({ day: dayFile, dataType: "sample2" }) }); +} else { + await partRunner({ part: part2, input: data }); +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..3835808 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "adventofcode", + "lockfileVersion": 2, + "requires": true, + "packages": {} +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..02bc525 --- /dev/null +++ b/package.json @@ -0,0 +1,20 @@ +{ + "name": "adventofcode", + "version": "1.0.0", + "description": "Hi all!", + "main": "helper.js", + "scripts": { + "launch": "node index.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Topener/adventofcode.git" + }, + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/Topener/adventofcode/issues" + }, + "homepage": "https://github.com/Topener/adventofcode#readme", + "type": "module" +}