From b49cb6a1ab7d1d7f38398e65fb7c53d03fcad7f0 Mon Sep 17 00:00:00 2001 From: George Wensor Date: Thu, 9 Dec 2021 23:49:36 +0000 Subject: [PATCH] days 8-9 --- 08/input.txt | 200 +++++++++++++++++++++++++++++++++++++++++++++++++++ 08/main.js | 63 ++++++++++++++++ 09/input.txt | 100 ++++++++++++++++++++++++++ 09/main.js | 63 ++++++++++++++++ 4 files changed, 426 insertions(+) create mode 100644 08/input.txt create mode 100644 08/main.js create mode 100644 09/input.txt create mode 100644 09/main.js diff --git a/08/input.txt b/08/input.txt new file mode 100644 index 0000000..da96389 --- /dev/null +++ b/08/input.txt @@ -0,0 +1,200 @@ +fbead dcabe bcega gfbecd ecd dgac cd bedcag agebcfd fcagbe | ced cgbefad gbcaef cd +bdef fbgeadc gabfc fadegb adefg abe be decagf dacgbe begfa | dbfe gaecdf fbgae agfbe +gad cgdfab ag edacgb agbfedc facdb dcebaf adfbg agfc gbdef | dga gacfebd adbgcf adgbce +cebadf gadcf egabfd ecabdfg gfcbd dacef geac ag afg fgdaec | aegc gdeabfc fgedac eacg +ceafb gcbfea eacgdf cegb eag bgfda eg fdaegcb ebagf adebcf | eg adgfb ge ceabf +gcdfeab bfdcga gdacf fe fae bdefga eafdgc fecd efagc aecgb | dcef fea cgfda gbcae +gbdce cfdbg efbd gbaedcf dge gfcead bcgae de bgacdf befdcg | gde fcbadg egdafc dbaefcg +adgecf agecdb dfcag cea dafgebc egbfc fdea ea agbfdc caefg | gcdfae aefcbdg fdgebac eac +dgcea acfged eagfc abdec dcg gd efcgdb adfebcg bceagf adfg | dfag dgebcaf dfbcage dgc +aedgbf dgfabec aefb edbgf gabdc ea gedfbc cgdefa dea baedg | ae ea eadbgfc fdabge +afgbde agbef df fda caegfb efdb fgdbeca fcdgab agedf cgead | fad df fd bedgcfa +bacdge gdecbaf bdfcge fabec dc dec cfbed gedbf dcgf agbefd | bcedf fgbed bcafe cfbedag +gbcafd bcd db begdc gedcfb bgdfeac cgdef dbfe gceab adecgf | dbc bd ebgdc bgcfda +ebafgd dcafeb ag gfadb aegb agd edbaf adcefg gcdabfe gdfcb | bgafd ga ga ag +gcbfda acd facdb aecbgf gafcb ad agbfced bacdge efdcb agdf | gbdeacf ad bgedca dcbagfe +gfae dae ea ecabfd edbgc aegdc cgfdae fcadgb facbedg gdfca | dfeagbc cdeabf dea ea +egafb ec dcegafb fcdag bcef cae cdgbae egbcfa abfdeg eafcg | bfacedg ace eca afgdc +bfgadc fabgd fcgb gecadf adceb gc cgd dabcg gadfcbe eadfbg | gbcf cebda cgd cg +abfdg dgabe cgbead efdb abfgced gefbda daf cfadeg cbgaf df | gfadb egbda bgdea bcadgef +aebcf agdbf adgbfce agbfec egcf acg bgacde cgbaf dfeabc cg | aefdbgc gc efadbc gc +bacdfe baefc edacb abcdg bafdge cgfbdea de cfebga cfde bde | ecfd bde cfbea fagebc +cefd cf afbegcd gfdcab adegfc baegf dgcea fcg cgebad gfeca | gdeafc fc decbgaf gedca +dgcae eadgbc eafdgcb ad badg deabcf gefdbc ade bdceg fcega | ade acedfgb acegfdb becfda +bfadecg cfadge bcgfd bceagf deabfg edg edca ecafg cfedg ed | cead deacfg ged gbfaedc +egafd dfbgcae bdf bfade dgbcfe bagf beacd fgbdae cefgda fb | fb gabf bfd cefagd +afedbcg eadcgf gebdcf agdfb ceagf baecfg de gaefd cead egd | bdeagfc ecda agbfd dgafce +bcde bc fgdceb bfc faecdbg adgfb cdfgb fbegca dgafce fdegc | cdgfbe fcgde cfb fcedg +bgacd cbf fceda fb gacbdf cadfb bdagce fegcbad beacfg fbgd | ecafbgd bfdg gcbdefa eacdbg +dgbec afecgdb fbgce dbgcaf becdfa bagcf efb ecfabg geaf fe | fegacbd ef fcbge abgfc +cedfg cgfaedb fgcdea gacdf gcae begdaf cdbaf fbcdeg ag gad | gcfebd cadfeg adfcb afcbd +edgcfba cdafb agd cbegfa dfagc acefg cgdbae dg dgceaf egfd | fgecba gad aebgcfd agfcd +afecdg bce gdeca cfdgbe bgca cfabegd daecb bfeda gabcde bc | bgca bec gabc bc +fgbdc gad ad eabdcgf gdfeac ebdfag baegfc gadfb ebad begaf | ebda dfabg adg bdae +bgec dbfga degfc eb deabfc fcdage bfe gfbced gfedb gfdcabe | bcge begc efb bcgdef +efbga bfeacg dg dfg afdce eafbgd adbg fdbcgae fcdebg eafdg | dbag fdg fgd gbad +cdabe agcbdef fgaed dbcgea fbce bfacdg fb faebd dbf fadcbe | bcgfda bf fb fb +cdafbe cbdagf fcgade fbage fbdae fdbca ed efd adfgceb bcde | ed adcbf bgdcfea ecbd +fgab gfacbd gfdcb fgdecb eagbdcf bdacg ag gad edgcfa eacdb | gcfdba fgdace cdegbfa agbdc +egcaf gdecbf beacg cfba dgfeabc abfgec baegd bc ecfagd ecb | bcaf cbaf gdecbf ebc +agfce cgedfb gbdfe daf da febgda cgfaedb adgb dgefa ecabdf | bdfceg dgab adf gadb +begadf deg aecfgb aebgd aebfg ceadgfb fead ed dbcga egdcbf | ged fcgeab gdaeb de +ad debcf deabgc acegbfd daef febcda cgebdf bcafd cda bfcga | acfgb cbdaeg gecadb acd +fadbeg bagdcf bcda fceag cfd bdgfa dabgefc cd bdcgfe afgcd | acbefdg dc gfcea bcda +fcbge bg cgdeaf bdegcf beg bfeca gbdc agdefcb gcdef bgefda | egb bgdfaec bg feacbdg +gcfabed dae geaf afdgc dfbcag cgadef dcebg defbac edagc ae | cdgae ae eadfcb egaf +ceabf fabcge cgfe gecabdf dgafcb bagcf edfagb ef cdeab feb | acbgf fabecg bfe badefg +adg bdfaeg bacd gcebd cgadbe da caedg egfca bfgdace fdbecg | dcab cgeda agd ad +cbdafge ecbg fabec caefgb cb abefd fcdega bac adbcfg efcga | cb gcbe bac dbgeafc +gfcbad fbc cf ebgaf acdbe decbfa dcbeag cdfe efgbdac fbaec | aebcgdf bfc dcaebfg edfbacg +dgcf bfaedg bdf cdagbef cbead df cebfg gdcfeb fbdce gabecf | fd begcf df df +bc egcb efabdc cfb gefdba cbfgade gbdef fdcga gfbcd gbdecf | cfagd ecbdaf cbf dbfcae +bc cbe cfega gbecaf fdcega dbefa cbgdfea efacb cdbega gfbc | dgceabf ebc bce fcgb +cf gfcdea fdage gfc dgcfe debcg fcbdag gefdba afec cgfdbae | deagbf eacdgf dgcbefa dfgec +cdgfbae bc ecabd cfabdg dfageb cfeda debga abc begdac egbc | bc cb acb adegbc +fd caegfd fed acfegdb bcfed cbadfe abfd bcaedg egcfb eabcd | dcabegf cbgdfea bfda cadbe +dbgac ebd faebdg afbcdg efcbg aedc dbgeca dcafgeb gcedb ed | aced edgbc ebd ed +fea dfbga bcedf fgadbce ea aebg bgfaed gdafec dbefa bdgcaf | abdef gdcafb dgbaf ebfad +eac afdecb dbegca acdfb dbacfge ea bcfea ebgfc fade fadcgb | fcbad ebcfa edcgba dacbf +agfdbc adcbg fdgc cdfeagb bgd eadbc edfagb dg abcfg bfaecg | cdfg dg gbeacfd bdg +fdbag gafcbe agfdcb bfc cdgf bdagef cfbda bdeac bcfedag cf | bdeca adfegb cbfad cf +agfdce ecd cbeadg ce bdagc ecagfbd bcegd abce bfedg gcbfda | cde cdbgaef ceadfg eabc +cgbda bceag bcgfde gdb dcabf dg badefgc gdae adbcge cabgfe | adcgb egdbca dgbfaec gdb +baefc gecfb bfadc dabcge cdbfage aeb ea bgafce ebdgfc efag | bfgdaec gcdebfa dbecgf dagcbe +bgdcfe cafdg cad acegf fgcadb fdcbg faedbc da gbecfda dabg | acd faecg afcdg fdbgc +gedbcf gef cfaedbg egbc ge gfcaed dcbfea fgbad dgbfe fecbd | eg gfe gcbe bcge +fca cbfge faceg fbeadg gdefa ac adcfbeg ceda cdbgaf dgaefc | gfabcd afc degabf fac +dacfb edbag ce abdfgc dcfe ebcda gecfab befacgd feadbc aec | cea dabcegf cea badfcg +edabgcf eadcgf dbgecf dgeca dcbaf adcfg fgd gf faeg decbga | bfcdeg dgfca edcafbg dcafbeg +abegcf bedaf fc ebadgc cbf fbcagd baecg befac defgacb cgef | ecbaf fbcdage cf bfc +acg bafgdc afegb bfacd bgeacfd fgdc cg aecdbf gdaebc cbafg | afdcb cbfgda acg abdfc +ca ace afcb afebcg ecfbg dabeg gfacde gbace cfgabde cdbfge | acbf cfegb gebad bacf +dgfcba fabcd cgbfae dbaegcf eadcf dagbc edbcag gbfd fb bfc | ebagdc fb edfgabc gadcb +gdaec dfgb dcgbefa bde ebadg cbfage cabfed efagb db bdgafe | bd abegf dbe deb +caebfg bf bgead dgecab bdaf bgdafe fbe dfgbeac bfged fgedc | cbgeda efdbg edacgbf feb +begca fbaedgc adbfgc adbecg bcaefg af afb cdbfe feag beafc | fadgcbe af bgdfcea af +dceab be gcbdaf ebc abfe bdfac cdbafe cagdfbe gbfced dgcae | acfgbed eb afbe eabf +fegdbc acfdb afgce badecf badg ebgafdc gd cgadf gdf dcabfg | agcfd fbdac gfd egbafdc +beagd fbcg gbecfad gc bacge adbefc aecfb acgdfe gfbcea egc | gc efacbgd agdeb cfbg +adcebf fgebadc ga ega bdga edafb egadf bcgeaf dcefg afdbge | abdg dbag edcfg fbegadc +fe efd egfbdac dcagf cgaebd cbfe gdceb dfegc efagbd fdegcb | ef gdaceb befcgd gdcfbe +badf bfg dafgebc gdabe edfbg bgfeac bf bdagef dbaegc fecgd | gacfbe bdagef cgaebd adfb +efdabg bedac fb cgedab cefgdab fcdga adfcb cbfe dfb ecfabd | bfd bfec debafc acbfd +cbdag fa bdfacg dgfac defbag cbaf gecbda agf dbegafc fgcde | gdcef cdbag gaf gcfde +cfagd fbagcde cb efdabc dgaefb cfbe adgbec bdc acfbd edfba | befc cfbe efbc bcd +bdcgfe acdbeg ac caed gdfba dagbc abc gbfcea ecbdg gbcdaef | aced dgbce cab gafdb +bgfd fecdgab eadcf acbged gd acfgdb cafegb cdgfa cgd cfgba | fdgb gecadb gd gdc +dbcfa gcebda becg dgeac dbe egadcf gdefab fgaecbd eb acdeb | bed cgbe ebd efbgdca +ebfd cgfdea fbdagec afbce bfdeac geacb fb dfabgc fbc dacef | fcb abcdef cfb fb +gceab bgef gbdca abdecf efacg ecbagf ebc cgdeaf eb gdfbcea | ebc fdcbgea eb fcedbag +cdfeg de edg dbcgaf defbcg cbfgd gfcdabe bdef gdebca efagc | bfacegd fdceagb fbed gcebfad +fecbdg fcagebd adbgfc ceba gecad dgfea egdcba dac gcedb ca | cdabgf edfacgb acbgde febacdg +gefacd febcga fdg gcfdb ebcgf cgdba gdcefb fd bfedgac bedf | bdagfce gfd bfdcge geacdfb +bacgfd ec cgbafe adbgfec acfbe fbeda eac ecgdba acbfg fceg | dcgaeb fcdgabe aec afdbe +egcd dfeca efagd fdcgae egf ecbdagf eabdfc fecabg dfagb ge | feacd eg gcde feg +begaf dcfegb dbcge gadcbef fc cdabfe fgdc decbga cfb becgf | bfc fc cdebg cgfd +cfbdgea fdg efbdc fgdecb gd gbeaf agdfcb cedg adfebc gfdbe | cfdbe afgcdb dfcebga dgec +fdebgc egba dcaebfg abfgcd ba bda gdceb cefda degcba edcba | dba bdafegc decba bad +cgeb bdgcfa dfgcb efcdg ge abfged efdac eabdcfg ecdfgb gef | cedfg eg fcade eg +eabdcg gceb ec ecfadg baecd daebcgf afdeb badgc bafdcg ace | bcdgeaf ec cebadfg ce +ebdf cagfeb efcda ecbdag ecdbfa aebdc cgdfa eaf caefgbd ef | eaf dcbea acgdbe dfcbega +gdbfa gfaeb cafbgd adb cedbgaf faecdg edfbca bd dcgb gcadf | db bcdg dgfba dbgc +fbcdga cea gbcaef decgb gcdfa eafd afcdge adgec ea dbceagf | eac egbcdfa ae dfea +beagcd egcbd gbae eagcdf gdcefb cbade fabgdce ae fbcda ace | bage cae ace ageb +bacgf bdgac dcebfg eacgbd fdgbcea gfdbea dc aced bdc dbega | bcd cd bagde bafcg +gfabdc be gcedba fecabgd edcaf egbf fcabg cgbaef abcef bea | acegdfb fdbcga eb becaf +dgfbec bdecga dfgca fd aedcgfb adgec adef fcd fgcab fcegda | cbfgeda cdf df fdae +cgfbe faceg bacegf dfgbe aefcdg abdcef cb gdbefac bfc gbca | cdgefab bc cbfead cgaefd +gefdcab ebcg fcb bfdce afedb fedgc bedfcg dcafgb degfca cb | bc bc dbfecga cb +efagc cagfde fb bfe begfa gbead badcgfe bgfeac fbca fdgbec | eacfbg efb feb bf +gebdca af afb afbed bcafgd fabgde fbedc afge dgbae eacdbfg | agdfebc af abegcdf baf +egbad cfedbg gb dbg cfdaeg bdeaf dgabefc cdbega cgdea cabg | efdab fedab gb gcba +adfcb defca cabg gdefab afbdg bdgfec gbcedaf dbc gdacbf bc | dfeac bdc cbd gabc +db ebcda ebgfac fcdea becga ebgadcf bdc cfedbg agdb bdgeca | fecda bd agbd db +bagcef begdafc fbga fceab afcged ecagf deacgb acb ba bcefd | cfbedga abc deabgfc bca +cbf gdbcae abdgc fb dagbcf gabf cdfea cabdf dabegfc fbgcde | cbf fb dgabce fbc +dfbgec fcbeg fbeag afdecb fcdbga cegd dfbcg efc ce adebgcf | egdc acegbdf agfbcd cbgfe +abgce gdec ce faebg agcbd bfcadg acefdbg defcab egcdab cea | gdfabc ce agefdbc ec +acedg gbc geab ebdfc bg cbedg dacebg gdcaef fabgecd dagbcf | cgb bg adecg acged +cfebad fbgda edg ceag agebd aedgcfb eg ecbfdg cgabde cebda | cbafegd gdacebf cega eg +eacdf ea eadb cfgde cabfde bdfgac gacebf afe fbcda gcbafde | bagcfe fae adfcbg cadbf +abd fgcaebd dbfgc gdeac fbedag ceba bcgad deacgb ab adcfge | dba bcea ab cfagbed +afg bgfce af dcfa acbdge bacfg agbfde dgcfab dgbac defagcb | dfgcab cfgbad afg dceagb +gdacbf ebgacf edbagc ae agcbf aefg acfbe fgbcead bcefd cea | eca adgfcb eca eafg +fcbae bea bcdaf cadfbg fbgec ae eafd dacfeb bagcdef cbagde | fecbg cgedbaf gdcfba bae +baefg daebgc bdgeacf gaecb efb feca abfecg fadgb edcbgf fe | bfgdeca gcbea acedgbf ef +cd fdaecbg cdbga befacg fbdag decb dca gfcead dacebg gebac | edbc feabcg gcefdba adc +agdebf daeg eadbfc gef dgbfec eg dbeaf afgeb fedbcga gcbfa | eg eg edgfbc efabd +facd cabfgd fab geadbfc af gcbad egcdab becfg beafgd acfbg | fa acdfbge gdcaebf dbacg +bcgfda gbeaf cfgba fae bace cfabge cfdgae gedbf ea dgcfbae | ae ea fcagb eafdcbg +dbe gdcb ecafd edcgfba acedb gebdfa bagdce fegcba bd gbace | bd feacbdg bd gedbfa +cabgde fagecb efb adfbg acebdf fecd afbdcge cdbae bedfa fe | cfabge fe dfabg bfdea +bacg dafcg cdgfaeb fbcgda baefdg gda dabcef gfced cfadb ag | bgac dcfge egcbdfa dabfcge +bdc gdac ecdagbf geacfb defcbg fabde cafbg bcfad cd cadbgf | acbdgfe fegcabd dafbc dcgbefa +cedbf ebdgcf degc dcfgbae aebfg dfg bedgf gd aebcfd dbgfca | dbfcage cdebf dg dg +edcfb ad cgad adgbfc agcfb agfebc bdacf cafgedb daf dgaebf | afcdgeb fda fda bfagecd +agcbfde gadbcf bdfcge defgc dc afdge dcg gabfec ecbd bfgec | gcedf bcfeadg cdeb eafdg +afdebg efa afbdc ecag egcfd debgcf ea fgebadc fdeagc defca | aef afdbceg ea dgeafc +cgdfb fg ecdbf fbeacd bgdaef bcadg ecfgdab dgbfce gfec gfd | gf gf gfce febdc +bgcde fedgc cgf gabcfd gdbefc defga fcbe cdabegf fc acbdge | bcfe efbc fc efdcgb +cagb ab gdaecf cgeabd edabg fcdabe edbfcga bfedg cgdea eab | gadce gdefb abgc fedcba +ecdafg feg bcgfad egbfa afbgc ecgfdab gaefcb eg afdeb becg | ge bgfdca eg fegadc +fe adefg egdac cbagdef dcfeag adecfb dbfag edbgca gfce efd | fe efgc cabegd fe +geab fgbaec gce adefc gcafdb agcef abgcf cdgebaf gcedbf ge | gabe cfega fbdceg eg +eac dgefca cfgdba gdfeabc eadf gcfbe adfcg gcfae gacbed ae | agcdfeb ecbfg gedabc ae +ec cdagb cegdab dagbcf cbaed ebgc ecd abedf fadcge cebdafg | ecd gacfdb becg ec +abfge ce cgfdae cbed fecab fbdca egfacbd efc acgdbf cebdaf | dgface efc ec ec +gbc gcdbf gb eabdfc egfb agdcf egbcda gcdfeab dgefcb fcedb | bgef gecbfd gb bgfdce +ecgab gecabf cb gfbc abc afgeb daecg fcedab fcagbde efdbag | bdecagf gbfea ebgcaf cb +ecdgb ab adgb dbecga fgbcde cadgfbe aeb eacgbf cabed eacdf | abdg cbedg gdabce cdbeg +bgc dgeb bg fcbge befcgd ebcdfa cbfgda efcag cebfd fagbcde | gdeb fcgadeb bfecd cdagbef +edbcfga cedbga bagfd eabc dgbfce eb gceadf egb agdec gbade | cfgead gefdcab bdcgae cbae +bafcge edfg abegd deabcfg dfbagc abcde dg bdg gbdaef febga | bdg fdeg dg cafbdg +cgfdba gec gdeafbc cfgead ce fbegd cdae facdg afcbeg edfcg | cbgfea cfgadeb gdabfce egcdaf +cbfgad bceagd dbf cdbfae ebdcf cdegfab cbaed gcedf bf aefb | aefb dcfbage bedfcga fb +cgd bcdafe dacbegf adecb dbfeg bacg gedbc gc fcegad agbdce | cdg fbdge ecdgb eadgfbc +gfdabe cfbga ceab eaf gefcab gcaef ea efcdg dgafcb abfdegc | ea cafbdeg fgcab acgfe +dfg gdfbe gf ceagdf aefdb fcbg begdc cgbdef cabged becgafd | fdbgce eadbf cgedb fbcg +fdeba ecdfa badgef ebagf abegdc dgfb bd febgca agfedbc abd | bd bfega bedgca cbaegf +bafcdg cegb acfbg feagd fdacbge be bfegac abe bdcaef afebg | be bfecdga defcgba be +bafgdc dbfag gfecdb cbf cf bfadge acgfb cgfdbae bgeca cadf | cf bfgcde gdaefbc cfb +gcdbaf cgbedaf ad ebfagc daef dbafec caedb bgcde bfeca abd | ebdagcf dfea fcaedb cbfgad +ceagfd eadfb fdeag dcgfe gea ag dagcbe fcegbd fbdaceg fcga | gfca fcga dcgefb gfcaebd +cdfbge dcafe df fcd badce gdaf agcfe ecagbdf eafbcg fgcdea | gdfa fcd eabfcg fd +ad bgdfae eagfd fedcg dagb gdeabcf dea bgcefa abgef fdbaec | afbge eacfbdg bgecfa fabge +adfbceg edcgf gcabd egfcbd ecbf cebgd cefdga be deb fedgab | fecgd gcdef ecfdbga daecfg +gdfeac afedc agdbcfe ae begcfa edfbc bfcgda dgea efa cafdg | abdcfge edag edfbc cfdga +cbdeg geafbc fd gfacdb fgdce fecgad feda dfg aedbcfg gcafe | fdecg fade fade cadefbg +af bcfeg gbcfda cgabfe ecgfa abef cgdae beagdfc gaf gebcfd | gdfecb afegbdc gfa gaf +bgafcd becfag cbdeag bagdc eb bdegc adbe cdfebag gbe egfcd | edbgac adgbc bge cefgba +dfcebg cgdaef ga fcbgd dgabfc debaf acgb agfbd defbacg gad | bagc bdeaf bfgdc abcg +ebgfac agfdceb cdbga dafc cfabg dc gebda dcfbeg dbc gafcbd | gfbdca fdac gdfabec bagfcde +egbac efabgc efagcdb abedg ead da dbac bedcga cegdaf gdfeb | dabcfeg gcfeda adbc ade +acgbfe eafdg dbea bfgea dgbcaf cedbagf dfgabe cdgfe gda da | gfebdac agd dgaef dga +edbgf ced bcdeaf cdgeaf bcfgade fbcad eabc cdgfba ec febdc | dcbef faedgc edc begfd +ca bedcaf cbaedgf edabf cab dfbca bdfgc cfea daegcb gbafde | ac cdfabe bcgdf gdfceab +bdef gecbfd gbdcf cbaegf cgbda dfc gdefacb fcaegd fd gebcf | cfd dcf df fegdcab +bf adfgce dcbea cfb gfdaceb cedfbg cfedb fcedg acdgbf gefb | fb bgfe gebf dacbegf +defc edfba eadbg feb fbagcde ef dafcb gbfdca egcfab aecfdb | ecdf ef fcbgae fced +acdbe aegb cdabfge ebdcg fcabd ea gebdca bfcgde gcefda aed | ea ebcgd dbcegfa dea +dbcfe bfcda cabfedg aefc cdfabg bgedc ebdfac edf fe efdbga | efca face fe cefa +egdab bgfd gdeabcf eadbc abg bg bacefg fgade cadgef afbgde | bfcaegd dbafge abedg geabd +ebc egbfdc degc ebcagf gbcfd acbdfg ec fcdeb abdcgef abfde | egdc gcdfb bcgdf ce +dbfaecg bd bcegdf cfabg dcba abfdg fbeagc fdb cbdfga efgad | bgaefc efadg gbcafe bfd +gacef dcaegb egadc efcbadg eaf caefdg defc fe afgebd agcbf | cedag dfce cedfgba aef +gafcbed gdcef bcefad daecf adc daefb cbaf egacdb bgadef ac | dbceafg ebfcad bdacfe dca +ecbfa fae afgbc cdeafg dcfeb efgcab ae beag gbadecf acfbdg | bagfdc ae feabc edcgfa +egfac gebaf ac cfab gca gcdef cagedb bfecag fagdbe gacfebd | gcbaedf geacbdf gafcebd cgefba +fbdgec efbcag acbedgf bac befcg adfbec fgca ca bagce gebad | egcbf ca cfgabde abc +edafg cabe fcaed ce faegdcb dcefgb fec fdagcb cbdaf cbfaed | acbdef cef ce eacbfdg +efbcgd ebdgc egacf gebadc gba dabe fagcbde gbcae ab gfcbad | aebd aedb bead cdbfgae +becag cbdf cebda fgdbea bdgafce ecfda abd adefcb acgdef bd | adbfegc eadgbfc dcegafb bfdc +gfcadb fega acbeg fgcab ebcda ebcdfg ge ebcfga gabfdec ebg | beg fgedbac eagf eagdfcb +gecf cbf cbfga egfbac cbgaefd dgcbae fc aebcg befdca bfadg | cbf bgfca fbc fcb +cedfg adbgef cb bcd cgebd dageb cbegad ceab bgfaecd cabfdg | gbced bc dgefc bc +egba bdcfg fbe acegf ebcfg eacbfg eb fdebac dgeacf dcgbaef | efgacd bef ebcgf fbe +agfcbd bafcedg dce bgdfce efbac dgfe begdca de gdfcb dbefc | ced ebgcafd ed bgdaec +decfa cgbdae bdfce dgcbe bdfg bgdefc fbe bf bfgcae ebcgdaf | fb gabcef efcdb gdcebf +fbecga efcbg bafgd ac dcgeab eacf bafcg gfdbace gbcefd acb | bfecga efgbdac fbegc faec +ab ecbagdf fbagec cfedb eagbdc acb agdb ecgda acedb gacfde | acdbfeg dgab abc dgbfcea +gfdbc begdcf bfedg acgfed cd fcd febgda cfgab cadbgef ebdc | ebcd gdefab ebdc ebafdcg diff --git a/08/main.js b/08/main.js new file mode 100644 index 0000000..ef10281 --- /dev/null +++ b/08/main.js @@ -0,0 +1,63 @@ +const fs = require("fs") + +const input = fs.readFileSync("input.txt", "utf-8", err => { + err && console.error(err) +}).split("\n").filter(str => str.length).map(str => str.split("|")) + +const isUniqueSegment = digit => { + switch(digit.length){ + case 2: + return 1 + case 3: + return 7 + case 4: + return 4 + case 7: + return 8 + } + return -1 +} + +const outputs = input.map(thing => + thing[1].match(/[a-z]+/g) +) + +const inputs = input.map(thing => + thing[0].match(/[a-z]+/g) +) + +let uniqueCount = 0, sum = 0 +for (let i = 0; i < inputs.length; i++){ + let str = "" + const outputSet = outputs[i] + const inputSet = inputs[i] + const oneSet = inputSet.filter(num => num.length === 2)[0] + const fourSet = inputSet.filter(num => num.length === 4)[0] + outputSet.forEach(input => { + if (isUniqueSegment(input) != -1){ + str += isUniqueSegment(input) + uniqueCount++ + return + } + // chars in common with one or four string + const fourCount = Array.from(input).filter(c => Array.from(fourSet).indexOf(c) != -1) + const oneCount = Array.from(input).filter(c => Array.from(oneSet).indexOf(c) != -1) + if (input.length === 5){ + if (fourCount.length === 2){ + str += "2" + } else { + str += oneCount.length === 2 ? "3" : "5" + } + } + if (input.length === 6) { + if (fourCount.length === 4){ + str += "9" + } else { + str += oneCount.length === 2 ? "0" : "6" + } + } + }) + sum += parseInt(str) +} + +console.log(uniqueCount, sum) \ No newline at end of file diff --git a/09/input.txt b/09/input.txt new file mode 100644 index 0000000..2e01b71 --- /dev/null +++ b/09/input.txt @@ -0,0 +1,100 @@ +9899899864598765321239999546794323489012356910136789234678999765986432109874349897678921298754345856 +8798788978989899992398798932986734678943869872345679129789999843497643298765456789568910129983236745 +7676567899976998789977587891297945789654699964557789298999987932599954399897897893457891239765101234 +6545459789765497679765476789349657898765789985668999987899876893989876988998998932378932349874323457 +6435345678987984568974345678998998999997893596779789876789765689878989877569789949989864556995434567 +4323234799999876789743234789997899990199952129895698975678934599769998966445679897899876769876546789 +3210125899989987897654348999876789989987641016954987654699545678958986543234598786788989895989657899 +4391434989878999998776567898765434878999832345693198766789956799346995432123987655677899934598978978 +5989549876567899899987898997654323459876546598789239979899897890239876543099878434566789545987899769 +9878998765456789788798999998765434568997687678898945989999789994345987654987654312345689656976793244 +9767989654345897652649999899876685678998798899987899995697679879959998765699873201239798769865692123 +8656976543234789341234987676987899899219999912345678934987599767898999978798765412345689898764789045 +9947987654375693210359876565499999931929898924569789875699987659946792499899886643459898999893492123 +9858998765466789391398765454346789649898767895798999997893987548937921398965998754567987897632459234 +8769879876879899989989764321234698798789656896897689889902998437898943497994339867899986796543678945 +9897765989989999867879865430126789987654546789989549778919876545999654986789123979999765689954567956 +9976544393499987853467954321245678998793235678965434567924998656998965987991094989998654578899778998 +9999932239599876542346986434358789899986545689876545679895698787897896799432989999987943348799889999 +8987890198989987621234976565469896799998676896987656996789789898956789898549878909876821234589997891 +7896991987678998210123989679578935678999787965498899875678999989545789987699868912985310345678956932 +6545689998899879321234598798689323489899898978309987664567899975434699998989957899976431458999349893 +5434578999998765442456679899799912398789959793212986543446798766323578949879898998997643467921236789 +4323467899989887663567889979899893987664234689323985431234579654212349939765789987698754567890945699 +3214347999876998898779998765998789998543123456939876420256689799903467897654579876569866678999899789 +4301236897654459989899659984345678987655234597899987834569798987894979996543456987456978789298798999 +3213345789542345678978939873234789398976349989999998945678987676569899987632169876345989892197696989 +5624567899643456789568998764566991299987898767998999987989986543456789198721098765456799943987575878 +5438678978954567895478679875678992989998939654767899999899976432345899239433679899587899656943434567 +6648789367896788901234567987789889879899029953459987899769865431235678945954567998679978969832123458 +9859895456789899212349678999898776768799998764567896988998765610123479959895979989989967898751012345 +9967997667899954324568989789999654356679879985778934567899654321234567896789898978997856987632123456 +9878998789999876535679495698998743244598965797899323456998767434345798965698767869896549876543478567 +2989899899999987646789323457987653123697854698965414568959876545756799454987655456789659987754569678 +1095798998989899756793212568999761019986543569876501278945987767867895323986542345678978998978678899 +2124567897679789868965425799999832198765432479987612378929898989978976568997721239899989539989789999 +3236678998554678979996934989987543239874321389998724567998769694989989679999843345789894312999895689 +4545699965433459989989899976797654647989433479999837678909654543295798797899756789898765109876954799 +5666789876212567899876798765698987656897654567892948789219763210134569896798767991949966212965432878 +9877899998434678998555679954459898768998765789910959898923987321949698965329878910123954329896421267 +5989999997565789997434567892346789878919878894329878987894596439898997643201989543239865498765432349 +4399998998776899876723478921234567989329989999456989656789989598797689764312399654345986569989643578 +1299897679897939765434589210565699995498797998968996546789679987654578975323478965696798679698754689 +2989788567998929876547895342456988976987656877989965432433567976543459987634569996989899889579965691 +9976543456899998987656789756769876799876546766899876541012456798952348998545678989878954993499876792 +8765432337899987698767899897898765689985432345789987632323577899891276789789989878767893212988989893 +9875430123789976569898945989999854578997643487892398743439688998789345689899998765456789329776598954 +9965321934567895452959999878987543567898797698990129965998999987678956789998987654349899998665456895 +9875439899998954321234988768987654678999898979789249879867899876598967899987598985269989876542347896 +6986598798789865632459876543298765889899989563678956998756998765456978999876459876378978965431238987 +5597989587678978643598995432139876998798765472489767987645797654327899998764323987889769896670123598 +4459965454597897659987689321025987998679977321238989998434589765458954987643212498997656795431245789 +2398854323456989798776567992134699876468893210137999987514678976579763296543101359894245695432356897 +1987643412345678939654467689657899884245789543236789987623569989697654197653212346792136789565456795 +2498532101246989549743234578968998762136898654345698765434678999789765298894343478891017899877567896 +3987643212397999959832175999878999754547899865466789987545789567996978349965454567892128998987688987 +4998784323498999899943567899989398767898999989877995998766893459545989459876565678943469876898999798 +9859897654679987799654678967895459898919498694989234889877965667934696567989876789656778965569899659 +8743998767899866698769899345989969999902397543992125679989878799323597689999987898767889654398788945 +9632349878998754569889943239879898997893598679875234567897999989434698799989698989898999965235667896 +6531267989989986678997632198767767896789989789994345789976567978965699899978559678999987892123456789 +7545459899878998789898543986553656789899879897989976789987699869998789998765432568990196789014567891 +7656797658768899894698754965432348999998765956978987998798987658789892399986543479989985698925678992 +8769989545656789923999869876521234689998754349869898997679799645679901989987756569876674567896999989 +9898978934345679899897998765420127899976543209655789876567697536796899878999867898985543456789878978 +9997657921234698789656789876431236789898754498743678975434598987895679767899879987654102345678966466 +8987546892945987678945678987654345698789865999654569876545679799934698654568992976543212456789854345 +7895435789896976567998789998765456789679979898785678997697989689996789763499201987954323589898763234 +6796576798789895456899899989876577894578998789876899789989993498989899852178919998765454678997654346 +5987678987676789345901939876987689923489987654987987698778921397878989943267898999986869789039766467 +4599999876575689234899029965499897634590976543499996545567892986565679894356997896897999892123978578 +3459898765434590135678998764345976545692985432459896532346979875434598789459876785698989993239899989 +2599749854325679246999569878967989656789987653498789431234567994323987689998765834569878989398789992 +1987630965434994356789479989878998787896599765987678932345679765509876567899954323498769878987678891 +9999521398946789969892398995989999898965439899876567894467989876798765458998763214987654567898546789 +8998432987656899899901987854699987999654323934985458965678999987987654367959984523986543456789434899 +7987674598967958789319876543598996598743209129994346899899019998998765488945965439876431345678924997 +5499789679878945689498765432387897679654998998789235679999198999879896569239876567989642456789213456 +9329898789989235578999878541266799998769876987698945791098987898965987892123987678998753768995101234 +8910959895490123467899999320145987899898765976587997892397596987654998999934999789989967989654312689 +7892345986321434678978989431239986989987654989456789989996465698789869898899889898879878998765424578 +6996456795432375679767978932398895878996432198568999878789324249898756797765678987666989129987435699 +5979677986545699897659867893987674567987643987678968965679210136999645975654457896544598998976546989 +4367999987656988976543956895698543467998754599889757894568921245695439984323298989323567897987659878 +3246798998789867897432348986987674578979895789997645953457999356976698793210129678912378976498798767 +2124687899898756789321467999898765689357987899898756892345678968998997654323234567924459765349987656 +1012456923987645995436578987789876791268998989769878954596789989459898969864347979895689921234596545 +2423677899999766898656679876565987892379129678945989965678992191298769798765456798789789890145985434 +7634988998919878998787899985434598943468934589959999876899321019497653669986599987678998789959876515 +8795999687909989999998999875323459976567896799898921989987432198976442456797987876589998679899987601 +9989896545798998989659298765435678997878987899767899898976543987664321345679976565456895466789998312 +9878789434567897878943019876546899898989098987656965787987674976543210146798765434345689345679876543 +9965678923456996567932129987656998779692199998767893656899895698956343234999875323239791236799987654 +9876799544799987459543298598998999657569987999898912345678976989765464349878974210178943478989899785 +0999898765678942378954997459679996545498876891959101234567899878999878498769865323367894569876799876 +1298999898799865489769876323589989432397545790943212345678998967889989998659876554459965679965587997 +2997899939894987999878965104678978921239834899865623456789987654378999867543987678767897898743456898 +9876789921923999899999874324989867890398765689976784568891298763254987658902398789879998987652345999 +7665567890199895679765965449898756789459876789987896878932459542123496543212479893989459876541256899 +8543458932987684567964987598765435678968997895398987989656899643234569854324569912995312997632345789 +7652369543498543678932197679886545799878998943219998999768998754545698765537678929876109876543467899 diff --git a/09/main.js b/09/main.js new file mode 100644 index 0000000..443300b --- /dev/null +++ b/09/main.js @@ -0,0 +1,63 @@ +const fs = require("fs") + +const input = fs.readFileSync("input.txt", "utf-8", err => { + err && console.error(err) +}).split("\n").filter(str => str.length).map(str => str.split("").map(num => parseInt(num))) + +const getNeighbours = (rowNum, colNum) => { + return [ + input[rowNum][colNum - 1] < 9 && [rowNum, colNum - 1], + input[rowNum][colNum + 1] < 9 && [rowNum, colNum + 1], + input[rowNum - 1] && input[rowNum - 1][colNum] < 9 && [rowNum - 1, colNum], + input[rowNum + 1] && input[rowNum + 1][colNum] < 9 && [rowNum + 1, colNum], + ].filter(point => point) +} + +const equalArr = (a, b) => a.length === b.length && a.every((v, i) => v === b[i]) + +const basins = [] +let sum = 0 + +for (const [rowNum, row] of input.entries()){ + for (const [colNum, height] of row.entries()){ + let previousColHeight = row[colNum-1] + if (typeof(previousColHeight) === "undefined") { + previousColHeight = 9 + } + if (height < previousColHeight){ + const nextColHeight = row[colNum+1] + const previousRowHeight = input[rowNum - 1] && input[rowNum - 1][colNum] + const nextRowHeight = input[rowNum + 1] && input[rowNum + 1][colNum] + + if ( (typeof(nextColHeight) != "undefined" && nextColHeight < height) + || (typeof(previousRowHeight) != "undefined" && previousRowHeight < height) + || (typeof(nextRowHeight) != "undefined" && nextRowHeight < height)) + continue + + basins.push([rowNum, colNum]) + sum += height + } + } +} + +const basinSizes = [] + +for (const basin of basins) { + let neighbours = [basin] + for (const neighbour of neighbours){ + const next = getNeighbours(neighbour[0], neighbour[1]) + const nonDupes = next.filter(n => { + for (let d of neighbours){ + if (equalArr(d, n)) + return false + } + return true + }) + neighbours.push(...nonDupes); + } + basinSizes.push(neighbours.length) +} + +basinSizes.sort((a, b) => b - a) +console.log(sum + basins.length) +console.log(basinSizes[0] * basinSizes[1] * basinSizes[2]) \ No newline at end of file