From 2dc1b8af66304e42d783e688b017f55ffaade89a Mon Sep 17 00:00:00 2001 From: Ishan Jain Date: Thu, 9 Dec 2021 10:38:37 +0530 Subject: [PATCH] Added Day 9 Part 1 --- inputs/input.txt | 301 +++++++++++++++------------------------------- inputs/sample.txt | 6 +- src/main.rs | 109 +++++------------ 3 files changed, 136 insertions(+), 280 deletions(-) diff --git a/inputs/input.txt b/inputs/input.txt index 741e60b..177132a 100644 --- a/inputs/input.txt +++ b/inputs/input.txt @@ -1,201 +1,100 @@ -dac abcf ac fdbcga dgcbae gcbfde fgcbd agfed adcgf cdbgfea | cbfa bcafdg cbfa bafcgd -abfgd baedc feb fgde fbagcd facbdge agcbfe bgafde fe ebdfa | bef fe dgfe feb -dfc dc afegbc bcafe fcead agefd cafdeb fcbeadg cbed cabdfg | cd geadf cfd bfaec -efacdgb abefdg efagbc af afe gdeab dbfa dgefa acegbd cdegf | cfdge gefda ecbgdfa eaf -feg gdbea edgbca gefdab caefdbg egfda afdgc fe cgfdeb efba | edafbg bdefgc egdfa gbead -bfeac becfd cbgdf gfabed gdefcab dcae edb de bgfaec fdeabc | bcfdg eagbfd fedbc cefdb -bgecd cea acegfbd ac gbefad cgdae fcag dfega abfedc gecdfa | gfdbae gcaf caedg ac -acbdfeg bfea agfed cedbg gedfba bfg dcgfea bf agfcbd gebfd | fgedb aefb gebdf fcgeda -gdcbfa agdfebc ecb fgcba ecgab efgcbd degca egfbac efba eb | egbfdc bfgcda ebaf gecda -gfcade fgedc agcfeb agdcbf dcae cgefbad ce ecg cdgfa dbfge | ebgdf fgcda gec feacbg -gcade fcdbea afegcb eafgc acfdbg aecfb fag dgcbafe gf bfge | decga gfeac gebf ecgbfa -fd dceabg bcgdef dcefag agcbf gcbfd gbceafd cdf dgebc fdeb | cgafde bdgec aegfdc gcabf -edgafbc bgaedf dbefcg efg fg acfeb bdega adgf cdeabg fbgae | dgacfeb egdfbac fbeca dabceg -dfecgb ecagbfd ceagd dgb dcfb bcegf abgedf cgbde db facgeb | efabgc ebfgc gdbce bdg -bcg dbcgea cg eadfcb agfbe cagd dacbe fcbdge abcge cedagfb | dbacgfe agdc dbcfgae bcg -dgf dfea cbadg gbeafdc fgcbae fgacde gcafe dgfac dfcbeg df | egdbcf eadf agcfd gefac -da dcgfae dac afcdg edaf fgbaec ebgadc gcfea cabgdfe dgbcf | dac fbaecgd fead ad -ecd bdecf bgdefac bafcd gdacbf eafd bcgdea bgfec bcadef ed | fgbec ebcfg fedcb cfdba -edacgb df gaedf gacfe dbegcfa dfg bfegda begad dafb cedgbf | faceg ebadfg fbdcge abfd -dgeca ebdfa dacegf cgba bcd bc acdbeg edacbgf edcab gedbcf | bc ecdag cb edagc -facbde deabfg daf gdbac efcd abecgfd cgafeb facdb fd bacef | baefgc edabcf dfce cfdbea -bafg gdfeb agbdfe ag adfge aedfc dbecag cfgedba bgedcf dga | ga dgefa gbaedcf fgebd -bcfed cafe cgbefd edfcab fa bgade dabfegc efabd fda gacdbf | bgade ebfdc decbf cbadgf -fcbgdae agef bcgda af cfbaed gdefc cfa dfcgeb gafcde fdgca | dafceb dbagc adgcbfe cdbafe -aebdfc dgcf aedgcb acdeg cfe fc dcfega bfage fgace cgfeabd | aefgc dbgefac egbfa egafbdc -bfgde bcdagf bga ga gfea abcde eafbgd edgab ecdbfag fecdgb | eacbgfd egbfda cdabe ebdgaf -fbcead afcdgb fbadgce fdabge ea adec aef afcbd ebgcf fbcae | afdebgc bafedg efa dfbca -gedafb fad gfeabc dgcf dfgabc bdaefgc dfcab abedc df gbacf | fagecb abgfc df gbacf -gcdeab efadg dfbc cebad ecafd efc bfcaedg acgefb dcaefb cf | ecfgba acedb fbeagc dacfe -gdfbc aefg adbceg fgabd fdcbea fa abfedgc bdaeg baf debgfa | fba debafc gaef cdbfg -cgbed dce gdebf fdecgab caedgb ec fagced bcae dbagc agdfbc | beafdgc edc efgdb edfcga -gdcbf fcga dcfbeg acfdbg cda agebd dabcg edbacf ca afdegbc | dac cfdbg bfecad bfcedga -gbacdf agef ebf gcedb cfgedba cagbf begafc gecbf ef cafdeb | bfe bdefgac ebf fadbgce -fdacg efdacb ebgd fdagb bfd dgbfaec efgbad cbaefg bd eagbf | baefg gecafdb ebcfgda cefagb -degcf ea afecgd fecgbd fecbdag cfaeg deabfg acde bgcaf fea | ecdgf eaf agefc gefcad -afegbc dbcfea bgefdc gadbc fbeac df dfb adbgcfe fcdab aefd | aegdcfb cdagb efabcd ecafb -cbagdf efgadb db bdg fbgeac dfcb daceg acbgf fbgaced dagcb | dgb dgebfa dgb faebgd -fcedb dcbage bc cfadeb dcb degacf gfcadbe dacef fabc gbfed | gfedb dbacef dbc dabcef -gefad ebdcfag ebcgd cgefdb abcdge ebf bf cgfeab dfcb ebgfd | dgbef afdge gfdae bdgec -dgbca bg gdb ecabfd efcdgba cgead begfad bcfg fcdba cadfgb | agdcb cdgfeab fdcgaeb gdafecb -egbdac gab edacb ag bgdfcea dbega agce agfcbd aebfdc debgf | fgbadc bag cbaegdf cdeagb -gafced agdf cdefa agfceb cbgaefd gecda agc debgc beacdf ag | dgcbe fgda gfad bgcefa -afegcd gc afecgdb bgfcd gfc fgdcbe bdfca gcbe begdf eabdgf | cgdfbe cg dcbfg gecb -afb bf afbced aefbc dgceab edabc fbcd befdga ecbadfg fcaeg | fb fdabce fbdc cbfd -fedba efdbgc fecagd dbc gdfacb ecdfbag bceg bc bcfde cgdef | cbdfge bgcfde acfgdb bdc -fd efacdb bcdgef fcegb fdb dfegb egadb ecabfg fbgcdae fgcd | dcgf gfdbe gdfc efacgb -cfbea gdbceaf bdafge fge gf afgd dacgeb dbgfec abdeg gbfea | gdaf dfcgbe fdga febac -bdgeaf gacedf gedafbc cgebfd cf fdcb cbage cfe fedbg bfceg | gbaec decagf ecf cf -eacfdb fb gcabf gbdf gfbcade afb dcfag gcabe acgbfd dgcefa | bgdf dabcegf gbafc acfgb -dbeafg fac degfc fgcbad dgbaf gfaecbd bfecda bacg dfagc ca | adbgf dgaefb acbg ac -fbdagc dfcea defgc fad faeg debfgc baecd af bgfcade agfced | ecdba dgface abdec gabdcf -dcabef gcefdab cadg dbfgae ceadb gd bdgce gdb dgceab efbcg | ecfbad dcaeb gbd adbcfge -cbegf ef cebfgd gdfabe cbagefd efg baecdg cfabg efcd gbedc | debgfc gdafbe baecdg agfecdb -fagbce aefbg eafdb gebcfd ga gaf eagcfbd ceag fbdcag cbgfe | cbgafd ga gfcbda ga -aecdf bgfadce eb acgbf dagfcb ecbagf defcbg cbfae fbe gbea | egbfca cafbe ebf bfe -bcgeda cb bcaf dbfgeca cdegf fdbeag ebc dcfbae bfcde daefb | efadcb gefcd fabedg cafebd -bcf fdgcb fdaecg gfcda dbcge fb cfegab afdb fdcbage acbdfg | cdgbf fb dgbec gcafeb -dfac bgefca ebdacf gdefabc gafebd fc dbcef bcdge fbead fce | abdfge dabfe cf afebcdg -dfabcg eagd cdegb caefb cad da adbec degfcb gdecba afgebcd | edgfcab adcbgf egad defgcb -gbefc fd becadg dfg abdfgc cfgbd afdc afdebgc gcbad bdgefa | bfcdg fbcdg cgbda abcgd -ce cebdgf aceb feacg bfecga fce aebfg ecdgafb dgbafe gdcfa | cfage fdcga fcaeg gcafe -gbac fceagb gadecfb ebagf gefbc cdebf feagdb gcf cg fadegc | agbc cfg fbdgea feabg -cd eacgfb facbe cfdeab afgbd bdfac caed dbgfaec bgdcfe cdf | acdfb afbdc cdf eacd -dbfgae geabf aefcg ebcgdfa eb feb agbdcf degb bfadce fgdab | fbdga gbdefa agbfd be -cdaef bdgc agceb becgad egfcbad cabde bda efbgac bd dbegaf | befagc bd ebcgda gabdce -ae gabdfe agdbf deabf febcd acegfb edga adegfcb fcgbad bae | dcabegf dgea geda abe -eg agec cadgf fbcdeg adgfe dcegbaf efg dfcagb fedba cfgade | adcgf gdcaf gef gbcafde -gfe cfgdab gafdb geda gefbd bfdgea bfaceg fedbc eg aedbfcg | gaebcfd cdafbg afgbcd ecdfb -fgbca dbf fd ebgad gafdb bgdaef fedgcab dbegac fged dbcafe | afdgb bfd dagbe befdag -dfgca aegdfc da fcdgaeb ebdcaf deag gfeac bgfdc ceafbg afd | daf adf gacfde cbdefa -adb gcabd cbged fgdceab cbgfa bdcfae da bgcfda dagf befgca | fgcab ad bda gcbad -edgfbc fbgecda bgcfe dc aecbgf dgbc cdbfae gfedc gdaef cde | cde fegbc edc befcgd -cebdg dfc bfde cagfe edcbfg fegcd cdbfgea afcgdb ecdbag fd | fd cfd gcbde feacg -dbgfc ebcfa gfbac aegf cfbage ag feabdc gdcafeb agb dcbgea | fabce afeg bacgefd gab -abgec cefbgad gfabdc feagc fag fgdce fbae af acgbfe bdgcea | decbgaf gfecd fcabgd fecdg -fgdcb fbagde fdgeb daefgc begdcaf baeg feg ge efbda dcfabe | dgcebfa eacdfg fdegb abeg -fdaecb gebad baedcfg gcde beg dbeac ge bgfeca bgdfa egbadc | egb gaedbc aebdc fbgda -becfdag gaefbd fcga ebcgda egafcb bgeaf gbefc gc cbdef bcg | ebgacf defcb acfg fcbaegd -fdgbea fecbd ebc ecdgf bgefdca cdbfae cb daebf ebgdca bacf | decfab bce cdgfeba ceb -bgc gfeba dcagfb bdfc eabgdcf dfgca gcefda cbgdae gfacb cb | agcdbf daegcfb fdcb bfcd -adefgc dc dbcage dcgf adc fdaec cbdgfae afebc abdfge fgead | dfbgae fcdg edafc cad -egca bfcade ga dag eadcf fdebg adfcgb dacgef egfda egdafbc | cfabgd gbdcaf cabfed bdfgac -dfgacbe ae ceafd cdgafe aec cbfda edcfg cagfbe dgea fgecbd | bcafd fdagce ace ea -fgbade bfedcag gdceba bf cedafb afb becda adfcg fdacb cefb | bf fba dcabe cfbad -acgeb dabc db cdebgf adgef gbd cafegb ebadcg aebdg fcbdaeg | gabec gebca abcge dagceb -egdcf fbgdec fb gdeacf gbfd bef bfcde becda egfcba gafbdec | dbgf fcdeb bdecf bfe -af ebdac dgacef abgf ecdbfg gefbd eaf abgcfed fadbge dfbae | fgaedb efa edfcga ecbad -ge fdbge dbgfec aecgfd gef bcge gfcabd befdgca cbdfg fedab | bedfcg gdcabf fge fge -cdbgea dge fcgabd deacbgf fdcea dcagb eg caedg bgae bfdegc | adgebc cegbfd dge egba -bgcfade bgedaf bfgc edfac ecgba efb bf dgaecb caefb aebgfc | cgeba efb abedcg gefacb -dfgec baedg egbdcf egbafdc egacfb efdcag gca cgade cfda ac | ac cdegf deacfbg edcag -dfeabc ag afbcge bag bfcdg adeg fgdcabe edcab dcgab edcabg | fgbecad bdcea bacefgd bdcafe -febdg fgdcba afdbgec gaefb aecb afcge ba abf abfcge cafged | afb gcafe fbgea aegfb -dab caedbg baecfg bafed db dbefag efbcgda afbge ceadf gfbd | bd ebfad cgbeaf db -fbg dabefcg dgfc gf fadegb ebgcf cgaeb bafdec befdc fdbgce | fgb bafdgce dgcf fabdge -gdfebac gdceb fcadge fgac cbeafd gaedfb dcfae age aegcd ga | deafgc acdef ga adfcge -begcfd cgf cg gcbd agedcf cbfaed bcfge cefdb aebgf eafgbcd | fcbde fgbea febcg gcdb -befcag befdcg fcdg bcefdga gebfd bfgec geabd fd bcefda fed | cegbf cgbeaf aebfdc geabcf -cdfeba cgabdf afbdceg bea decba ea eadf bcfda fegcab begdc | ebcgd eba ea baced -bcedg ac dca gcaedf bfdae dafgcbe dbgeac egfcdb bacg abecd | daefcg acgb ac bgefcda -bfegca bf edgbacf agcef feb fdcgea cbaf becdg cegbf afbdge | bef cbaf bacf fcebga -edg afbcdeg cafed cafged geca degfa gbafd ecdfbg ge eabcfd | bdfga dgafb deabfc dface -gfa afcgb cfgdea ga fdbcg febcad aecbfg aegb fcbae dgbafec | cfbea afgecd fcgab ga -edgfbc adbcgef gdabec egf dfega fdabe fg dfcage afgc cadge | dabfe cdaeg fge befgdc -dagecb ed cdgfb edcgb becag adbe egdafc cgabfed ced ecabfg | egbdc cgeab efgcdba cbfdg -afg egdacb gf dfgca fegcab cdaef dgabc afdcgb gdbf fdgbace | dcgfba cefdgab bfaedgc ecfad -ace agbecd eagf gfbdca cefda fdbec dacfge gfdca ea cbdgafe | gbdcaf deagfbc cafgd ea -efa baedg dcgaeb febdga efagd adgbcef dfba fedgc gabcfe af | dgafcbe dfba egbda edfag -fageb edgab da cgdeb fbedag ade afgecd begcfa acfegdb bdaf | ebgfca da ad gcdbe -ebfac dfbeg ecgfab acfg cg baedfc gce gfbdeac agedcb bfecg | gfeabdc fdbge ebacfd gacf -abfcg bgfea gbc bdgefca bdacf efcg gecbaf cg gbdafe bdegca | gadebc aebdfg bdefga gc -cedgb ebfa edcba dab defcab dfeca gacedf bgdefac cbgadf ba | abced abfecdg ba cgdfba -abcde aedcf afe bcfgdae fbec adcfbe ebdgca ef dbgaef dfgac | cbfe adebc adegcb aebdgcf -fdgcea aebdgcf egdabc defcbg efcba acbed gcdae bagd db edb | eafbc eabdc eacfb fcedbg -cefbd gefcb gf becafgd cfdbag gaef cagbe bgf dcaegb efgcba | bgf fage gefa fbg -ceafb fcegda fcbead cabfg dcgfbea aecfd eb bdcefg bef adbe | fedcag fgcaed gafbc cdfae -efcabgd fbcda efcad cfeg fde adbegc deagc aefdgc fe dbfaeg | dfe ecgf abfdc eagcd -dcebga afgbc gfbad efdbcag ca cfea efgcb eabgcf gcbfed cga | afcebg gecfb ac ac -gceaf dafgceb afcbeg geacfd fbcead bfa fb gbef acbfg acdbg | acgedfb fb gbdac fab -gbf bgecfd adgfcbe bfgec bfcgda efdcab gf defg bdcef gecba | dgfabec bfg fg becdf -dg dgb gbacd bdagfc gafd gaceb dbacfe fgebcd gfdaecb cbfad | gbecfd cagbe bdg abdcg -cdgbe eadcg dcb db bgecfa cegbdfa fdeb acgdbf becfg decgfb | febcg cgbde gfbcae edcbg -gcfdbae dgf dgeca dcfge dcegbf fcdeba fedcb gfbc afbdeg gf | edfcb dbafec dcgfabe fg -dfbaceg ab edcfb adb egabcd dgfbac fbag cfbad fagcd gedacf | fgdabc ab feacgd ab -debga ec edc gfdca agdce afegbd aecdgb bcea cbefgd baefcgd | gadfc defgcb caeb abce -edabfc fdaeg dgacfe bdacfg cfabdge efcda fgd gdce dg gfbae | abcdfg dfeag edcg acegdf -bagcfe afedc dbec fadecb fbdega ed afdcg aefcb efagcdb dae | cbedgaf gefabc decb ed -abe fadecg bfcage bcdafe ecfad afdgb afbde be bedc bfeacdg | bgfad fcdgeab be bcfgead -bf decgb efb bfegdca bgfd adfce fcdeb gabefc cdaegb fecbgd | decbg fb gdebc gdfb -gfcbed efdcb dafbcg db gedb deacf cgfbe bdf abfecg defcagb | bdfec cfdeb bd adecf -gceab gefbda bdegafc fgbd bedacf egd agdeb daefb fagedc dg | dg dacebgf bafegd edg -abecfg dgbca egc aegcb acgdfe agefdb bfec ce ebcdagf bfgae | bcfe bcfe acgbef gfedcab -bfacg eafdb cadbge fecbad gcbdafe ge dabegf egfd gae abgfe | ge efgba faebcd dafeb -gebd db gbcdfea fbd acebgf fedab agcbfd afecd befadg gbfea | bdeaf febag fgecab afcebdg -defac gdbfce dfbga deagbfc geadfb cbag cdafgb facdg cgf cg | eabgdf caefd cbag gfc -dafbc fgead edgfac cae gdabec fgeabcd ec acdef debafg cgef | ebcdga cgfeda efdgac cgeafd -ec dcbafe gbafcd dfgbc dec baedfcg faedg egbc egbfcd dgcfe | dce gbcefd gabcfde adcfeb -cbegdf ad aecgf befcad agdfc gcbdf adc cfgdbae dabfcg agdb | bdga bagd fcgad ad -edcbafg ab eafgcb ecdba egfdcb fcabed debcf abdf eba dagce | aeb dbcegf geadcfb aeb -bg gcefa aefbdc bcgae fbegacd cadeb fcegdb bgc eagcbd badg | bcgea adbfcge cebda cdegab -ebgad gf edfcb cegdab dbaegf agfd dgbcefa efdgb fbg gabecf | fcadbeg bcedagf dfbge gdaf -gbcfea ecdbga cgebf bdefcg fdbe de acgfd gedcf fecdbag ced | edfgcb fbde beagcfd gecabd -gfdceb aegbc ca cbdafg daebcg bac edac gcdbe abegf ceadfbg | ca bca gdebc decgb -cbfea fgadbe eacgf daefcb fgdeabc acdb ba bgecdf fba fedcb | cdfbega bcfea ba badc -cbfge bdca dgeba dce ebgcd dc gdebac fcgeadb beafgd fdceag | ebgcd gcdfae begdc agbde -acg cagdfe cebfdg dgcfa fdbac gdcef baegfc acdegbf ag dgae | cadfg efgabc egcfad dbcaf -bfae ea eadcfgb dcgba dacefb dcfaeg dae bdcef decba egbfcd | dgcba cdbeaf cedbf fcaegd -fcga agbedf edcgaf ca dabcef fegadbc ecgda eca gcdbe gefad | ca ca dgebc eca -bcead fd gbedfa adcgefb fdgcba bagfce adf fdbae dgfe abfeg | ebafgc fegd dfabe edgf -bca cbfgea cdabfe cedfa fdbc cgabefd cagdef eacbd cb bgdea | dcbaef cb bfcd cab -baedgf debaf edga bgafedc bda ecfbd ad bgdfac afgbe abcfge | aged bfedc abd cdebf -acgdb agcdef egc baefcd cfead fbdgeca ge dgace gaef dgcfeb | cbeafd acfed ebfdgc fdceag -dbegfa ef fbagce dcgfab efb agfbc cegdfab fecg dcbae aefcb | bgdfea afcgbe fe bafcg -eabdf fegb aecfgbd fg cabdgf agf dgeca adegbf dacfbe dgefa | bdecafg fgbe agbefd fabed -gdbec facbeg gbedf egabc dgaebc dcb adgc baecfd cd ceadgbf | dc dc cbaefd cgdbeaf -ef cfgab fegbc bdecg adbcfge agebfc bafcgd acfe ebf dfaegb | fbdgae ecfbg feac afec -agdebfc dae ecdf bfacge fegca dabcg de gdace gdabfe cfgead | egbdaf gabcd dea gfbace -ecg gabce fdecbg edacgb eacbf aegdb cg fcbeadg abgfed dgac | dbgae gec geabc ebcgdf -fabec fd egdfca dcf dcfgbe dgeabc dgecb febgacd bfdg dfbec | beacf df egacfd fbcae -eacf gfebad cefgad adcgf af bceadg dfa bfdgc gfeadbc ecadg | adf aefc dfagce caegd -afgbec fbgdc ag gaebcd agc gfdeacb bcefa ebcfda fgbac fgae | fbgdc bdgfc agc dacbef -bc bfcad cbgfed baec cbd fdacg fdbae aedgfbc faegbd cdbfea | ecgbdf gfbdea dfcag beca -bedgafc fbdea efgdbc edg cefg fbgdc eg cgafdb febdg egdabc | fcbgda ge cbagdfe gbdcf -bgdeca fadcegb adg cfaegd bdae edcbg ad bcgfa cadgb fecgdb | dafgce gecdba dbfegc edbgfc -ecgafd faebg gbce defbacg ebfagc eab fadecb be aecgf dfgba | bfgae dfabgec efacg ebgfa -edfg fad bgead cgaebd bcdgaf fdebgac dafgbe ebfac badfe df | eabfc begfad dgbea dbeaf -cdaeb acdbfg gfeac aefcd gecfad gefd bfgcae fd beacgdf daf | egcaf gbdafc bagecf fedg -gf aefcd adegbc fecdgb gcebd fcbg cgdef edfabg eadbfgc dgf | bfgc bgecd gdcefba abcdeg -gfdcbae cegdab ecgbf dcabef cegdb caegf fbgd bf bfe edfbcg | bf cbfeg ecfag bef -befdga bcagdef ebgaf bcfega ce cbge gfacd cae cfaebd eagfc | fdgeab cgeaf fgceab eacfg -adgbe gcadbef gbfe befadc fdbga agced bde acbfgd fgbeda eb | abefcd dfcaeb gaecd decga -gdbfec fbdce fgcade ebadfgc cb eacdgb bcd edfba fgbc edgfc | gfeadcb bfead fgbc cbd -dfaegc deabgc fabdceg gcf fc fdbcag cfde gacfe fbeag aegcd | afedgc gcf cfed fdec -acdfb dfaec bdcfga ceafbg gedabc fbgd bf cgbad cbf fdgcabe | bfegcda gadbc cdefa caedf -cfgae dcfageb gbdf gebacd edcfg cdg cdbef dg cdfeab bcefdg | geacf dfgb dg facge -gcdab dabgec fecadg ae cbadgf ade cbaed beag cebdf cbdfgae | bacdg eda facbedg gfbdac -fd dfgbcae bdf fgbda cgabf beagd cbadfe gdabfe dbaceg fdeg | fbd gdbae cdebgaf fadgb -ecgdb bfdgec fce caebgd fc fageb fcedga gcebadf cbdf egcbf | decgb cdgfea edcafg cfdebg -bafgd abcedf egb bdacge fageb adecfgb febcag fecab cefg ge | ge bafec ge ge -agcbd dac dcebfga ac ceba bcged gaedfc ebgdca adgbf cbfged | bgfad bace fecbgd adc -agcfd cag gbecfad agdfe gcedfb cbad ac cgbfae bdgcf acfbgd | gbafcd eafbcg gdafe cgefab -geadfc bfeg bf bcf bdgca ceadgbf eabfcg bgcfa cfedab afgce | acefg gacdb agecf cgbfa -aecbd afced af dfcge afbc edfcab cgbeda gabfde afd faegcdb | fgedc dfaec bdfaec cdegf -dcbfge ab bdgeca bae gcba debcg dagbfe gdeacfb acedb acdfe | cdbgea adgceb ebdca aegdfb -ecfadg agfce da cfbgea dae aedcg bfaced cgdbefa debgc dfga | eacdg afcebd faegc bafegc -df fdg dfcega gfbce aebdg bdafge bfad egbdf dbafgec acdgeb | afgedb egfdb df fbad -eafbc egbac fcb cf cgbadf becdagf cbdaeg efagcb aefbd ecfg | cf cf cgfe acegb -fceab cedfabg fc fadc cgbea bdfea egfadb gecfdb fbc abcefd | bfc ebafc aefcdgb bcafe -gb efadb dcefba fdcga fgbaed fadgb feagcb ebdg beacgfd gab | gb feagcb gb acbdegf -ebc acgedbf gcfeb edcabf bc bcgefd bcdg gcefd gdfeac egbfa | gcdb gcdfe cdbg dbafce -bgdc efacdg dabce begad cgbaed fabeg baefdc fabecdg gd edg | edabc gd geabf gafeb -gaecdf fabc fgaec bc bgc gcfbe bgcdea dgebcfa efgbd afebcg | afcbeg adgfbec gcb gebafc -aef facedg fdgbce cade fegcd fbacgde faecg gfabc egdfab ae | bfdeacg edac eaf fgedacb -eafcgd cebgf fdc debcfg dbcfg afbgec dc fdbga dbce cedfabg | cgeabf facedg bcaegf bdfgc -afegbdc bcaefg decba gdfb aedgfb efb adfge bfade agefcd fb | cfaegd gcdafe ebadf gecfad -afcb bgdcfe bacdfe ceadf cbefd caged bgedaf af egfdbca fda | adf ecbfd efdbc adefgb -cgdaef eagfb afdbge gfedb ecfbd agbd cbgefa gd agcbefd dfg | agcfbe fgcdae fdg fgd -ed afbge fbcaeg bcdfa gfeabd gfed egbfcad geadcb adbfe ead | begadc abefg dea dea -fceba deafbc aegc edbgafc bfdcg ag dbafge cfbeag abg cafgb | gab agb abfegd ecga -fcedg cfdaegb dbfg egcfbd bgc cgbefa cebgd ecbad bg dceafg | cgb fcbgae ecbda gebcd - +7988912498775677899976544676789212346793989896459876543679986778999879896543234965421014567898756757 +6777924987654686789987632345678954569894978789398765432456895569998965799765459876592923458987541246 +5456896987823545569876543566789995778999765678979986544578923459987894678976599999989899567987620134 +4345699876710123499987994677897989989998754567954397755989013498765953566989989998766678978998321345 +2235689765324648578999789989976768999987643678964219876789129579654212345898767987654568989876543459 +1024569879534787689998689898765656789643212567895324989899298998732101256789959876552456898998765668 +2137978998755698798987596789843245698775103456789765693998987899899912487899849865431545587899878979 +4346899659876899987656434695432167789874312569899876964987876789987894568989723987420123456789999989 +5657896542987899998543326479943278993965643678956989899876755799876795779876545696541344678996989999 +6788976321299967987632101267895389012396864989643498798765434598765689889987656987655456789865467899 +7899985410123459998843212348996498923987878995432987659878321987654898992398997898769767897654357898 +9979876653237598999954423456789987899798989789544598434987210398765987821039998929879878986543234986 +5668987954546987899985534668899976587679998678995679645696531239878976532129999212989999775444129875 +3456799875659876899876645789989897434599902456789798956987642449989876545298789423495497654321012954 +4677999996767985689987766899876795323989893487899987897898743658999988656987679934984398767443199743 +5789989987979876789299898999975689919979789678999876789909869767919899767987567899876209976564987621 +6899979999989998992199979898754599898667699789989545678919998978909765979876456789998212987676798510 +7998769897598679999988466789876698786544578999875533569398987899998954599765347899989323598787987421 +9878656789434567898976365679988987695433489998764321239497676899987895679874267999879946679899876532 +7765347996545698987654254598999976543212568969976443998974545798946796799842157898768899789944987543 +6673234789956799798762123767899989874323678957988769887563234587897897987652046989857678996432498667 +5410123567897895699543013459989998765435989348999898765432123456789979876543135678943589789321298798 +4321244789998934987676434678979999896546990245986987654321096567898765997765647899432423578932349899 +6532345998999326799898945889768799987667899366965398965439989778987754598978956895321012456944569935 +7643496987894315698949767999654678998789978979893219878998878999996432989989767976532123467895678923 +8789989996789504987656989798773239999993467898799101989997656789987599778997978976546234678987799212 +9899879985679423498767894659982099987812456987678919999986547892198987666896989987664345799999989903 +2998769864568945589978953545894989876543667898789998899876535989019896545799993499875456896789967894 +4987654953456896678989542123799876997864789999898976789987323569198765434878932346987667985699856789 +9876543212349789789199965345698965698965678999987965679893210378999767323567891234598778974598768999 +9987764101234678991019896459987654569876789788965754598765321289898653210379990123479899653459879998 +9999853213345789432199789767899932157989893567954323459898535696799864321245689294567939778567989986 +7998765435456898953987678998999893249897902467893212699987679895999978442467890989878949889679895354 +5679979545567987894596568989998789998776212379989301989699789924889989766579931979989999998798754213 +4343498758799876789987879878987656889654323569979999876529893212679999878689999868999989989899842101 +3232349767987915679999998769898645778965434598765789765436989101567998989789987657899878978921943213 +4101234989875423467898764546789434569197545698764678976545678912345897694999996645678967967939876454 +3213445999995434898998753437678928789019678989912467998657799424556789543239865434567956756899989876 +4324557899976545699999542123569219678998789974326579349779897435678897654345986323478943445689391987 +5436898967987676789987541012789901567899898765987891298989986545679998767459875212357921534789210198 +6545989978999887899987432124567892457892949976798932397997897656792129879679954323569210123494321249 +7679978989989998999876573336678953767901234987899793976896999877891099989898765654678921234989934956 +9798867899978969899989876457789764889212346799978689875699899998932989999999878965699632349877899897 +8987656989767456789593987567999875999329987989767598986789678999545978929876989977896543659766789798 +7757645779854345995432097678999989998998998976553467987894579899999769019865699988987654599854347689 +6545434567943257896543998789998999997987899965432438998913689789887658998764569999998765987843235568 +7432123688954346789669899899876899875676789876510129999524598598766546789543488957899899876452123467 +6543334799765457899998789998965698763245678987542247896434597439854235699854567899989943995321036799 +8754455999879568999887678987654569654356789876543346789675986429863146798765679998768994987432145678 +9965667894998678998756569996543479875456799987654567898796975310954345679897789987656789876544287789 +9987878943459989989545467897695689976569898798967679969998976429865766789999898996545789998955398999 +8798989895698799879721256789789896987678999659798789954599986539876988896789956789434589219765456789 +7659395689987698765430145698999965499899998734569898893989697656987899965689345678923478909896667998 +8543234569876549876981234567998977345998989123456986789876569767898998764578956789014567896998978957 +7654109678989656999876545699997894239897878935769975678925459899999987653469987892123478945789989546 +8869298999598767975987656789876789129776767949898764599212399956798998532357898943234569435678998734 +9998987989439899864398967898985789298545456896999753479901989532987987620578999769357678924579987645 +9987675978921999872109879967454599987434345965987654567899878993986598321234899998998799314699698656 +8765423567890199943223989954323459886521239894598965679998756789765459543466789897999894323987579868 +9754313458921987654434599893012398765430456789969988789893344598764349874678994786898965545999456989 +8742102567899899876546999762124679965321345899856799899672223579653298765679563535567976659898968999 +7653212348988789997999899854345789986732456789735678987521012699862139979899432123459999798767899109 +9854323459976578989789789987467896597653468898623489996432359985989345989987541014598998987656789398 +8765434899865459876566678976578999439796589997544568987546598874695456794598672123997987897545678967 +9876646789654321995434589987689997929897699989659678998669986763498768893359987439876876989439999856 +9997797899995210987657991099999896899998789678998799879878985452349879921267896598965385678998779645 +8998998999889921298968993298899765689999894568999893656989876321245989542456987987854234567987656434 +7659789988677892989879589987698954569986953467897932347999988454346797656767898976542123457897542126 +6545679876566799878989679878567895698765432399976431349899876567857899777879979987643235578998631018 +5432398765455989766899789767458999789876591988997653498789998798767979888989765698954545678997632346 +4321298774344678954668998654345698999987989876989768987678999899878965999698913999875659789986543457 +9543987685123789543459876563234567899899878765878979876556789934989893234567899878986789998997654667 +7667898543234696432345998434145678998798765674567897687445789123499799013498998765497891237998876789 +8799999657345679321236987621012789987679974553456799543234591013987678934989987654398910956899997895 +9988998765456789910449998732334567897598763212345698987445989125696568945978999873219999899943459923 +9867899876587997892348999644645688935459754323457987896589978934987479899869345965423988798991292101 +9756799987998966789556798767856799322398767434598996987679867895699356798758996987554977657989989212 +6845789998989655678967899878997899901459878875699885998798756789898769997646889998699866545976878943 +5434677999876543489978978989298998892347989986988674899999348898989898785425677999987654439895657895 +1012346897998674568989569592129556789456796799876532789993201987878997654304556789875432129754345699 +2129578956798785679392398431012345997579985689965321679987512986767898743212347999986573098975212688 +3298989245679898789101987549124459899998764569879433598998434975859999856423467898987654987654303567 +4987892134598989898924597698939598768899878698998944567899549864348989998644568997898865699965212456 +9876989012987665967896698987898698656789989987897956778989997955287678999757689456789976799864343567 +9765678924598574456998799756789798638998799986986899889679876543124567898768794347893299899875456878 +8954689634999432347899898945899909545999698765455798997598765432013478939989894236789345976996567989 +7653499549898921258789987834978919696789569654344567996439896563123599023598943145678967895987698999 +6532368998767892345678996521467898989893498743243456789545987879234789146987654235989879954599899549 +8743456789759789557899865410356987678954987652102567898756798995365693234598964347899989893434999698 +7656587997645678969998765321269876569865698843213678929877899876876895397699895456789398732129888967 +8767899987657899878979765433345988778978789956523799545988954987999976989988796568890297643498767456 +9878999898767999989568986544578999889989898765434999796999313399987987978979689979991298764989854321 +4989398799879889995467897655678933991296929876645678989876501239876899867464578899989999879878965452 +5794219654989678976345898766989321390965410989876989667988213398995679954343456789678878998765987674 +7984398763494567898656789879995490989894321297987899545599754977894569865212367896564767999954598895 +9875459982123456789878895998976989879789432996798978923498769865323498765423498998323556789863989976 +6996569971012358997999934987899876565678949875439569212459879973212549876434569657212346999872975498 +4987698763123457895432129896798765484579898764323459103456998764301234996545879543101867896989854329 +3498987654235767996321098765789994323456789871012348914577899878412346987656989754563778965498754312 +2109998767346878976543459434679876107689896532434567899789913987523457899767999986774689764349962101 diff --git a/inputs/sample.txt b/inputs/sample.txt index 42b3bfd..6dee4a4 100644 --- a/inputs/sample.txt +++ b/inputs/sample.txt @@ -1 +1,5 @@ -acedgfb cdfbe gcdfa fbcad dab cefabd cdfgeb eafb cagedb ab | cdfeb fcadb cdfeb cdbaf +2199943210 +3987894921 +9856789892 +8767896789 +9899965678 diff --git a/src/main.rs b/src/main.rs index adf6bc1..48165d4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,90 +6,43 @@ const INPUTS: [&'static str; 2] = [ include_str!("../inputs/input.txt"), ]; -const fn map_to_segment(c: char) -> u8 { - 1 << (c as u8 - b'a') +fn parse_input(input: &'static str) -> Vec> { + input + .lines() + .filter(|&x| !x.is_empty()) + .map(|line| line.bytes().map(|x| x - b'0').collect()) + .collect() } -fn parse_input(input: &'static str) -> impl Iterator, Vec)> { - input.lines().filter(|&x| !x.is_empty()).map(|line| { - let (hints, displays) = line.split_once(" | ").unwrap(); +const NEIGHBOURS: [[i32; 2]; 4] = [[-1, 0], [1, 0], [0, -1], [0, 1]]; - let hints = hints - .split(' ') - .filter(|x| !x.is_empty()) - .map(|hint| { - let mut out = 0; - for c in hint.chars() { - out |= map_to_segment(c); - } - out - }) - .collect(); - - let digits = displays - .split(' ') - .filter(|x| !x.is_empty()) - .map(|hint| { - let mut out = 0; - for c in hint.chars() { - out |= map_to_segment(c); - } - out - }) - .collect(); - - (hints, digits) - }) -} - -fn decode_hint(hints: Vec) -> [u8; 10] { - let mut out = [0; 10]; - - for &hint in hints.iter() { - match hint.count_ones() { - 2 => out[1] = hint, - 4 => out[4] = hint, - 3 => out[7] = hint, - 7 => out[8] = hint, - - _ => (), - } - } - - for hint in hints { - let one_overlap = (hint & out[1]).count_ones(); - let four_overlap = (hint & out[4]).count_ones(); - - match (hint.count_ones(), one_overlap, four_overlap) { - (5, 1, 2) => out[2] = hint, - (5, 2, 3) => out[3] = hint, - (5, 1, 3) => out[5] = hint, - (6, 1, 3) => out[6] = hint, - (6, 2, 4) => out[9] = hint, - (6, 2, 3) => out[0] = hint, - _ => (), - } - } - - return out; -} - -fn solution(input: impl Iterator, Vec)>) -> i32 { +fn solution(input: Vec>) -> i32 { let mut answer = 0; - for (hints, digits) in input { - let decoded_hints = decode_hint(hints); - let mut out = 0; - let offset = digits.len() as u32; - for (j, digit) in digits.into_iter().enumerate() { - for (i, &hint) in decoded_hints.iter().enumerate() { - if hint == digit { - out += i as i32 * 10i32.pow(offset - j as u32 - 1); + let m = input.len(); + let n = input[0].len(); + + for i in 0..m { + for j in 0..n { + let mut is_minimum = true; + + for &neighbour in NEIGHBOURS.iter() { + let x = i as i32 + neighbour[0]; + let y = j as i32 + neighbour[1]; + + if x < 0 || y < 0 || x >= m as i32 || y >= n as i32 { + continue; + } + + if input[i][j] >= input[x as usize][y as usize] { + is_minimum = false; } } - } - answer += out; + if is_minimum { + answer += input[i][j] as i32 + 1; + } + } } answer @@ -105,9 +58,9 @@ fn main() { #[bench] fn solution_bench(b: &mut test::Bencher) { + let input = parse_input(INPUTS[1]); b.iter(|| { - let input = parse_input(INPUTS[1]); - let result = solution(input); + let result = solution(input.clone()); test::black_box(result); }) }