From 34783e647ee1731f68f07ef8567ddaa0c2decc10 Mon Sep 17 00:00:00 2001 From: Parnic Date: Thu, 8 Dec 2022 10:31:32 -0600 Subject: [PATCH] Day 8 solution I'm sure there's a cleaner way to search in four directions rather than manually running each loop like this, but I didn't want to mess with genericizing it just yet. --- advent-of-code-2022.csproj | 1 + inputs/08.txt | 299 ++++++++++++------------------------- inputs/08a.txt | 5 + src/08.cs | 159 ++++++++++++++++++++ 4 files changed, 264 insertions(+), 200 deletions(-) create mode 100644 inputs/08a.txt create mode 100644 src/08.cs diff --git a/advent-of-code-2022.csproj b/advent-of-code-2022.csproj index 8a851ee..729f342 100644 --- a/advent-of-code-2022.csproj +++ b/advent-of-code-2022.csproj @@ -42,6 +42,7 @@ + diff --git a/inputs/08.txt b/inputs/08.txt index 41e1b54..935b20b 100644 --- a/inputs/08.txt +++ b/inputs/08.txt @@ -1,200 +1,99 @@ -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 \ No newline at end of file +200120010031113332213034140102430141241124321111512323442304040044220141342121012210022220211111200 +111021120230012003124233312003010303204555454332453445353125225214221214442214301113012111020220220 +010000112330232223210123331341111021455213441355415452453433542411022110033014112420103200010200112 +210220131023203033023421012411405531115123145115445215311422135252541100222231431331003220231121021 +020112210133112114444340100410411231114131452544155151415233415312511222041221113442132231003203100 +121210122332301142321211440441113455552434332511455325315545354524142541534411112013143013120333022 +002022223332143323320030004111431434153352153321414154453442552321332341355132444030442110103203212 +212130023213100232130230411132244242133251435525323326611211534441513532233340420321144212221332012 +112201210213131241203033341411115513233426453426433653356253533133113511115222441140433214102332200 +212012000101044144022321521321444445566546646625625665232323663631331412343532242340023204432003233 +101233132121222100241254211542133266356326564552445466322626353633223221135151311240430411433022011 +200132020222314334333551152431232424524623645555522366665322366466545513112135535223102441334310202 +023113000020114221524122422222662645435544455234636242322656464245462233555511334411233402112203303 +323212301014434412315252233452332225554646452654545433445553336343544664455435323243510303023142200 +310022200424121333144123222262332322343322244646667564465544426245466232342143412141451122001041322 +212301111322001335441132334525635254352425553354565445643472236236266635446421522132452121404230333 +222212444300345211222512256444456624535343536756355746664436374344346652444335121144422222340114403 +133103420101433344253425324366444265345745457464444766674564476573243345254266312555221132304022243 +104024111323421413115464433455553477333456354575666765646757774776752425462423244113225443242031103 +102001244212344453145353232652647556546465453563544776667356374453675332254663444121345213131024201 +224444241243433331136646422564367344447534333336573546336576477746463642222264422255444411444213332 +111102440221143134255523244546456346745346547453543465664363545634575433436342252431313443241200434 +134231321331555233423635635366465473563535535586445888474374535544636375425246452265522242444124430 +234112414314111344422243544643454775656784865866884848444877466476364476356322553554245224411411221 +034400114351525345222546546744637535635657575787587675474664764764736443646462322222525151425423322 +200214241324215322354446653764777674587466544685754678446567884767437556756324542252661541311422130 +343144113253113264625454456777333344687566876677476786864558645875776364454562645333232242321313142 +343024121143435322432236376444777668467756646886688564457885758774655565674476525265433235351133020 +403402124545255442342535445764457654765745674556784877787445455686478773563733543423236235255444144 +103322531152132266562676355566367676848756788886766967585484486646776553753344443262466623351341241 +310355244513624552353465735465555764667556575665597778969594858667646774744555337236256442514154340 +023311451112523462333545544537465688645559988688956997665697964748587858337347363225646321434554144 +320135522136342345436443367666564847488558589757575579796688785767645678467555334323622425311134113 +302355525243323546577736555686874886486985688686888898966978978668487864787645754566534465541511251 +334125312126266532347576536548547584696886997768569758698995755875465674754333433642553345425533431 +341111335132225635365534457665748575977867585959997886979957965558787465664637533766462255534332423 +332515314534343636736373478687676678865555895657977886779567677978977887466835476754353523355412552 +223554423243256435734467677444784886576856669787898778968956989875566754875777467667635224535114135 +155522522343322534364735656868875656687568869667769697877887796866975856457447636733764232364431215 +242345244424435673345476658556448689589759768689899966877768987857579874745884637474453634352133231 +415255446645436567674735664645455855996887768879976678686967768687868985856885736776326622253351232 +345511155426334655353457846578475998667966669787979667866969678557875668566464436456435236255355314 +142554534636264637437346664558867877978687978689679869967766679569789677485678377367342526223134543 +445152112563265336347774464854776998568899676687677797996796877777879786686845577654534235322155423 +333311452256452445537757558677965658888896678979799998788899698785896978877575444547572432544335251 +153342523322435374455644657476596955598987666997999878876686677879688676464687476363732553363413554 +144335145664565566437454557675966795686769969779977988878679878778787789465465637576634655354532332 +152415343652336664567566647557776598677998979889877998977867798897785759685544636646555455665423232 +233452324356364643433768554555595977968766779897887998898666688775789556775758843355374525244243434 +415514136342636535455644448567857957878867697988999887897878896698589669784466744746433345345355353 +232342145445335734443368474877857768999979889789879797978786868766697957448687837436437246435352325 +423142134652644455355368647749855698998886897798977997799867788779868756865564445675347463653623132 +221215125542657466763755887857659858677696867997877899797779899996787779754784846775376254442211254 +154531463524644747547747455647685566769977767978799879788898879798999996758665537564563322242224125 +114543323332546776763457675777969696978788779877889799879998997975759878686666834757774555334611241 +353441154256436766664748544445957885788777978878979877989798876799786999466647747557553324526153313 +433233236244364537664567776764977668967888876787887977898978679686668778764647857553662664333221513 +112335142543334473565677774456986769698869989679787999966877889796668798648474667745633463364123315 +113555236654542657737447854474695576987788777767987976776779677896568655666568777374452626625515123 +335535115334436455537766485588496998559679678997888767666867796988758985466776445675326242423551222 +113534446446435634464566878474597579966586699697988866966997787776788976778774466655756463456235323 +432234422656545375357656547448457656589888789768979867898878979959955468888683644466555336562315155 +313344415452422533675445775845665999956589788887986877769867786689888565577764433373633363624515141 +222432351346446453465663784584875977688789959977876966969658866777886544775874577535665532224311252 +225114233145352533344653757488874695566977756698769768695668575699668757584555454357642544414312222 +033415322244643242337557674678486867575857998965787859688788778777887745544746656765646262354135222 +244444135424622245536477356767676647596876888859989597677576756885858547856577434533266366252341111 +043422441154553466473376764757644888596669857975585975898957778585855575867574554436566563342243533 +331142132342425642446677456357664865566895568659588999997598897847485545576757377726563624233332331 +023252542543632422666654576368776445864568889675685656595757555564576478356355573264462564525315531 +401013153355343645357335364463874854866687865999886679877556446867474565563474773455256232432344241 +021145311524153334266573666344586785645787666877957988698886547444446737764473344255436645355133043 +343022114235145422524664767447348848745548778464684486768568675765556575337775543626443412212441440 +111402455441135334663624565477563468586767564584754776865658486876757446535673333342623334312243002 +300312451335434322222245676775746358685854756547745674447587647487533473336654232544332431554454412 +433111155454541556355524273356653577688858857767884847858548544877576457444762553325524214215402141 +131233333423335563265232427676636343767667757678865557657665545337553674363435662333422331253432142 +424110224332255444554444426563344537343587775787775766858448446366677553432226234426335534235001312 +333412002215124441543424366273747763767633456777658554454464446357566564765333524264253113145112300 +101110030515255434456252656567734365435643756543777575374763565634563366532624443621453215143234300 +303322412424455315323623364345353365376676743654344676735433644466637676342646445331232331222232310 +323112211415542144152522545435246756534467755554567676637543357465766366552324534423444455001240332 +104010010231221552145233456226456635564775656444567465773637433733444632663325561451234351230241312 +121411232340543435321316435636242655564355535365574763633547465475523553325562122152444444042300041 +131012210332331125512334254246234345354543573744464635755354544666345534262435114123351541032131413 +320204021134412321515435566234224352423426577577364457356445435455454244243342521425351312003010221 +323114214132034241313542544555435465334424654666346364554655422236635456436354122354410044244241323 +013302120424301452153353441245652435266525344656664634425626224355262362255351231351513443132401213 +320030122021334215313244242334523262333453263233364243362363226452453421344311524253311414201210001 +232000301112410134252124412414346224626463252363536262245565624425334453135542241232142142113023001 +023101113421202000305251552134255163452646652324334242436543224522235515444445314014323100240020120 +320223110031202012323335553432231212252653563665545464422324656333443431535442453303001103202231020 +102033222010100142203435155413125314311166645446465322244546532441244154143433143443342400201012012 +103310002120123402241302221241151441435355114335344522434421453552354154135223134443030043002000021 +112323110033212002113322411233332355223342424233213123445224135331545115152043042400020200022133330 +022111301200101044211214231433231311322554214331413543414521424255241531111410022413003020200231110 +012022111212202121003233141343155411314255551134343533133453252153433344441013011221420230021203220 +221101122202110034040022441212441254112211113355531534335143125434435312222200311411322330203331100 +210122210200133032213341213111433213432513121525124133544144433541201142230241123430213303001122221 \ No newline at end of file diff --git a/inputs/08a.txt b/inputs/08a.txt new file mode 100644 index 0000000..a5d1b7a --- /dev/null +++ b/inputs/08a.txt @@ -0,0 +1,5 @@ +30373 +25512 +65332 +33549 +35390 \ No newline at end of file diff --git a/src/08.cs b/src/08.cs new file mode 100644 index 0000000..0b7b6e1 --- /dev/null +++ b/src/08.cs @@ -0,0 +1,159 @@ +namespace aoc2022; + +internal class Day08 : Day +{ + private int[][]? trees; + + internal override void Parse() + { + var lines = new List(Util.ReadAllLines("08")); + trees = new int[lines.Count][]; + for (int i = 0; i < lines.Count; i++) + { + var line = lines[i]; + trees[i] = new int[line.Length]; + var row = trees[i]; + for (int j = 0; j < line.Length; j++) + { + var ch = line[j]; + row[j] = ch - '0'; + } + } + } + + internal override string Part1() + { + int total = 0; + for (int row = 0; row < trees!.Length; row++) + { + for (int col = 0; col < trees[row].Length; col++) + { + if (row == 0 || row == trees.Length - 1 || col == 0 || col == trees[row].Length - 1) + { + total++; + continue; + } + + // from left + bool blocked = false; + for (int checkCol = 0; !blocked && checkCol < col; checkCol++) + { + if (trees[row][checkCol] >= trees[row][col]) + { + blocked = true; + } + } + if (!blocked) + { + total++; + continue; + } + + // from right + blocked = false; + for (int checkCol = trees[row].Length - 1; !blocked && checkCol > col; checkCol--) + { + if (trees[row][checkCol] >= trees[row][col]) + { + blocked = true; + } + } + if (!blocked) + { + total++; + continue; + } + + // from top + blocked = false; + for (int checkRow = 0; !blocked && checkRow < row; checkRow++) + { + if (trees[checkRow][col] >= trees[row][col]) + { + blocked = true; + } + } + if (!blocked) + { + total++; + continue; + } + + // from bottom + blocked = false; + for (int checkRow = trees[row].Length - 1; !blocked && checkRow > row; checkRow--) + { + if (trees[checkRow][col] >= trees[row][col]) + { + blocked = true; + } + } + if (!blocked) + { + total++; + } + } + } + + return $"Total trees visible: <+white>{total}"; + } + + internal override string Part2() + { + int highestScore = 0; + for (int row = 1; row < trees!.Length - 1; row++) + { + for (int col = 1; col < trees[row].Length - 1; col++) + { + int[] scores = new int[4]; + // to left + for (int checkCol = col - 1; checkCol >= 0; checkCol--) + { + scores[0]++; + if (trees[row][checkCol] >= trees[row][col]) + { + break; + } + } + + // to right + for (int checkCol = col + 1; checkCol < trees[row].Length; checkCol++) + { + scores[1]++; + if (trees[row][checkCol] >= trees[row][col]) + { + break; + } + } + + // to top + for (int checkRow = row - 1; checkRow >= 0; checkRow--) + { + scores[2]++; + if (trees[checkRow][col] >= trees[row][col]) + { + break; + } + } + + // to bottom + for (int checkRow = row + 1; checkRow < trees.Length; checkRow++) + { + scores[3]++; + if (trees[checkRow][col] >= trees[row][col]) + { + break; + } + } + + var finalScore = scores[0] * scores[1] * scores[2] * scores[3]; + if (finalScore > highestScore) + { + highestScore = finalScore; + } + } + } + + return $"Best scenic score: <+white>{highestScore}"; + } +}