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.
This commit is contained in:
2022-12-08 10:31:32 -06:00
parent 8f9b147913
commit 34783e647e
4 changed files with 264 additions and 200 deletions

View File

@ -42,6 +42,7 @@
<EmbeddedResource Include="inputs\07a.txt" /> <EmbeddedResource Include="inputs\07a.txt" />
<EmbeddedResource Include="inputs\08.txt" /> <EmbeddedResource Include="inputs\08.txt" />
<None Remove="inputs\09.txt" /> <None Remove="inputs\09.txt" />
<EmbeddedResource Include="inputs\08a.txt" />
<EmbeddedResource Include="inputs\09.txt" /> <EmbeddedResource Include="inputs\09.txt" />
<None Remove="inputs\10.txt" /> <None Remove="inputs\10.txt" />
<EmbeddedResource Include="inputs\10.txt" /> <EmbeddedResource Include="inputs\10.txt" />

View File

@ -1,200 +1,99 @@
fbead dcabe bcega gfbecd ecd dgac cd bedcag agebcfd fcagbe | ced cgbefad gbcaef cd 200120010031113332213034140102430141241124321111512323442304040044220141342121012210022220211111200
bdef fbgeadc gabfc fadegb adefg abe be decagf dacgbe begfa | dbfe gaecdf fbgae agfbe 111021120230012003124233312003010303204555454332453445353125225214221214442214301113012111020220220
gad cgdfab ag edacgb agbfedc facdb dcebaf adfbg agfc gbdef | dga gacfebd adbgcf adgbce 010000112330232223210123331341111021455213441355415452453433542411022110033014112420103200010200112
cebadf gadcf egabfd ecabdfg gfcbd dacef geac ag afg fgdaec | aegc gdeabfc fgedac eacg 210220131023203033023421012411405531115123145115445215311422135252541100222231431331003220231121021
ceafb gcbfea eacgdf cegb eag bgfda eg fdaegcb ebagf adebcf | eg adgfb ge ceabf 020112210133112114444340100410411231114131452544155151415233415312511222041221113442132231003203100
gcdfeab bfdcga gdacf fe fae bdefga eafdgc fecd efagc aecgb | dcef fea cgfda gbcae 121210122332301142321211440441113455552434332511455325315545354524142541534411112013143013120333022
gbdce cfdbg efbd gbaedcf dge gfcead bcgae de bgacdf befdcg | gde fcbadg egdafc dbaefcg 002022223332143323320030004111431434153352153321414154453442552321332341355132444030442110103203212
adgecf agecdb dfcag cea dafgebc egbfc fdea ea agbfdc caefg | gcdfae aefcbdg fdgebac eac 212130023213100232130230411132244242133251435525323326611211534441513532233340420321144212221332012
dgcea acfged eagfc abdec dcg gd efcgdb adfebcg bceagf adfg | dfag dgebcaf dfbcage dgc 112201210213131241203033341411115513233426453426433653356253533133113511115222441140433214102332200
aedgbf dgfabec aefb edbgf gabdc ea gedfbc cgdefa dea baedg | ae ea eadbgfc fdabge 212012000101044144022321521321444445566546646625625665232323663631331412343532242340023204432003233
afgbde agbef df fda caegfb efdb fgdbeca fcdgab agedf cgead | fad df fd bedgcfa 101233132121222100241254211542133266356326564552445466322626353633223221135151311240430411433022011
bacdge gdecbaf bdfcge fabec dc dec cfbed gedbf dcgf agbefd | bcedf fgbed bcafe cfbedag 200132020222314334333551152431232424524623645555522366665322366466545513112135535223102441334310202
gbcafd bcd db begdc gedcfb bgdfeac cgdef dbfe gceab adecgf | dbc bd ebgdc bgcfda 023113000020114221524122422222662645435544455234636242322656464245462233555511334411233402112203303
ebafgd dcafeb ag gfadb aegb agd edbaf adcefg gcdabfe gdfcb | bgafd ga ga ag 323212301014434412315252233452332225554646452654545433445553336343544664455435323243510303023142200
gcbfda acd facdb aecbgf gafcb ad agbfced bacdge efdcb agdf | gbdeacf ad bgedca dcbagfe 310022200424121333144123222262332322343322244646667564465544426245466232342143412141451122001041322
gfae dae ea ecabfd edbgc aegdc cgfdae fcadgb facbedg gdfca | dfeagbc cdeabf dea ea 212301111322001335441132334525635254352425553354565445643472236236266635446421522132452121404230333
egafb ec dcegafb fcdag bcef cae cdgbae egbcfa abfdeg eafcg | bfacedg ace eca afgdc 222212444300345211222512256444456624535343536756355746664436374344346652444335121144422222340114403
bfgadc fabgd fcgb gecadf adceb gc cgd dabcg gadfcbe eadfbg | gbcf cebda cgd cg 133103420101433344253425324366444265345745457464444766674564476573243345254266312555221132304022243
abfdg dgabe cgbead efdb abfgced gefbda daf cfadeg cbgaf df | gfadb egbda bgdea bcadgef 104024111323421413115464433455553477333456354575666765646757774776752425462423244113225443242031103
aebcf agdbf adgbfce agbfec egcf acg bgacde cgbaf dfeabc cg | aefdbgc gc efadbc gc 102001244212344453145353232652647556546465453563544776667356374453675332254663444121345213131024201
bacdfe baefc edacb abcdg bafdge cgfbdea de cfebga cfde bde | ecfd bde cfbea fagebc 224444241243433331136646422564367344447534333336573546336576477746463642222264422255444411444213332
cefd cf afbegcd gfdcab adegfc baegf dgcea fcg cgebad gfeca | gdeafc fc decbgaf gedca 111102440221143134255523244546456346745346547453543465664363545634575433436342252431313443241200434
dgcae eadgbc eafdgcb ad badg deabcf gefdbc ade bdceg fcega | ade acedfgb acegfdb becfda 134231321331555233423635635366465473563535535586445888474374535544636375425246452265522242444124430
bfadecg cfadge bcgfd bceagf deabfg edg edca ecafg cfedg ed | cead deacfg ged gbfaedc 234112414314111344422243544643454775656784865866884848444877466476364476356322553554245224411411221
egafd dfbgcae bdf bfade dgbcfe bagf beacd fgbdae cefgda fb | fb gabf bfd cefagd 034400114351525345222546546744637535635657575787587675474664764764736443646462322222525151425423322
afedbcg eadcgf gebdcf agdfb ceagf baecfg de gaefd cead egd | bdeagfc ecda agbfd dgafce 200214241324215322354446653764777674587466544685754678446567884767437556756324542252661541311422130
bcde bc fgdceb bfc faecdbg adgfb cdfgb fbegca dgafce fdegc | cdgfbe fcgde cfb fcedg 343144113253113264625454456777333344687566876677476786864558645875776364454562645333232242321313142
bgacd cbf fceda fb gacbdf cadfb bdagce fegcbad beacfg fbgd | ecafbgd bfdg gcbdefa eacdbg 343024121143435322432236376444777668467756646886688564457885758774655565674476525265433235351133020
dgbec afecgdb fbgce dbgcaf becdfa bagcf efb ecfabg geaf fe | fegacbd ef fcbge abgfc 403402124545255442342535445764457654765745674556784877787445455686478773563733543423236235255444144
cedfg cgfaedb fgcdea gacdf gcae begdaf cdbaf fbcdeg ag gad | gcfebd cadfeg adfcb afcbd 103322531152132266562676355566367676848756788886766967585484486646776553753344443262466623351341241
edgcfba cdafb agd cbegfa dfagc acefg cgdbae dg dgceaf egfd | fgecba gad aebgcfd agfcd 310355244513624552353465735465555764667556575665597778969594858667646774744555337236256442514154340
afecdg bce gdeca cfdgbe bgca cfabegd daecb bfeda gabcde bc | bgca bec gabc bc 023311451112523462333545544537465688645559988688956997665697964748587858337347363225646321434554144
fgbdc gad ad eabdcgf gdfeac ebdfag baegfc gadfb ebad begaf | ebda dfabg adg bdae 320135522136342345436443367666564847488558589757575579796688785767645678467555334323622425311134113
bgec dbfga degfc eb deabfc fcdage bfe gfbced gfedb gfdcabe | bcge begc efb bcgdef 302355525243323546577736555686874886486985688686888898966978978668487864787645754566534465541511251
efbga bfeacg dg dfg afdce eafbgd adbg fdbcgae fcdebg eafdg | dbag fdg fgd gbad 334125312126266532347576536548547584696886997768569758698995755875465674754333433642553345425533431
cdabe agcbdef fgaed dbcgea fbce bfacdg fb faebd dbf fadcbe | bcgfda bf fb fb 341111335132225635365534457665748575977867585959997886979957965558787465664637533766462255534332423
cdafbe cbdagf fcgade fbage fbdae fdbca ed efd adfgceb bcde | ed adcbf bgdcfea ecbd 332515314534343636736373478687676678865555895657977886779567677978977887466835476754353523355412552
fgab gfacbd gfdcb fgdecb eagbdcf bdacg ag gad edgcfa eacdb | gcfdba fgdace cdegbfa agbdc 223554423243256435734467677444784886576856669787898778968956989875566754875777467667635224535114135
egcaf gdecbf beacg cfba dgfeabc abfgec baegd bc ecfagd ecb | bcaf cbaf gdecbf ebc 155522522343322534364735656868875656687568869667769697877887796866975856457447636733764232364431215
agfce cgedfb gbdfe daf da febgda cgfaedb adgb dgefa ecabdf | bdfceg dgab adf gadb 242345244424435673345476658556448689589759768689899966877768987857579874745884637474453634352133231
begadf deg aecfgb aebgd aebfg ceadgfb fead ed dbcga egdcbf | ged fcgeab gdaeb de 415255446645436567674735664645455855996887768879976678686967768687868985856885736776326622253351232
ad debcf deabgc acegbfd daef febcda cgebdf bcafd cda bfcga | acfgb cbdaeg gecadb acd 345511155426334655353457846578475998667966669787979667866969678557875668566464436456435236255355314
fadbeg bagdcf bcda fceag cfd bdgfa dabgefc cd bdcgfe afgcd | acbefdg dc gfcea bcda 142554534636264637437346664558867877978687978689679869967766679569789677485678377367342526223134543
fcbge bg cgdeaf bdegcf beg bfeca gbdc agdefcb gcdef bgefda | egb bgdfaec bg feacbdg 445152112563265336347774464854776998568899676687677797996796877777879786686845577654534235322155423
gcfabed dae geaf afdgc dfbcag cgadef dcebg defbac edagc ae | cdgae ae eadfcb egaf 333311452256452445537757558677965658888896678979799998788899698785896978877575444547572432544335251
ceabf fabcge cgfe gecabdf dgafcb bagcf edfagb ef cdeab feb | acbgf fabecg bfe badefg 153342523322435374455644657476596955598987666997999878876686677879688676464687476363732553363413554
adg bdfaeg bacd gcebd cgadbe da caedg egfca bfgdace fdbecg | dcab cgeda agd ad 144335145664565566437454557675966795686769969779977988878679878778787789465465637576634655354532332
cbdafge ecbg fabec caefgb cb abefd fcdega bac adbcfg efcga | cb gcbe bac dbgeafc 152415343652336664567566647557776598677998979889877998977867798897785759685544636646555455665423232
gfcbad fbc cf ebgaf acdbe decbfa dcbeag cdfe efgbdac fbaec | aebcgdf bfc dcaebfg edfbacg 233452324356364643433768554555595977968766779897887998898666688775789556775758843355374525244243434
dgcf bfaedg bdf cdagbef cbead df cebfg gdcfeb fbdce gabecf | fd begcf df df 415514136342636535455644448567857957878867697988999887897878896698589669784466744746433345345355353
bc egcb efabdc cfb gefdba cbfgade gbdef fdcga gfbcd gbdecf | cfagd ecbdaf cbf dbfcae 232342145445335734443368474877857768999979889789879797978786868766697957448687837436437246435352325
bc cbe cfega gbecaf fdcega dbefa cbgdfea efacb cdbega gfbc | dgceabf ebc bce fcgb 423142134652644455355368647749855698998886897798977997799867788779868756865564445675347463653623132
cf gfcdea fdage gfc dgcfe debcg fcbdag gefdba afec cgfdbae | deagbf eacdgf dgcbefa dfgec 221215125542657466763755887857659858677696867997877899797779899996787779754784846775376254442211254
cdgfbae bc ecabd cfabdg dfageb cfeda debga abc begdac egbc | bc cb acb adegbc 154531463524644747547747455647685566769977767978799879788898879798999996758665537564563322242224125
fd caegfd fed acfegdb bcfed cbadfe abfd bcaedg egcfb eabcd | dcabegf cbgdfea bfda cadbe 114543323332546776763457675777969696978788779877889799879998997975759878686666834757774555334611241
dbgac ebd faebdg afbcdg efcbg aedc dbgeca dcafgeb gcedb ed | aced edgbc ebd ed 353441154256436766664748544445957885788777978878979877989798876799786999466647747557553324526153313
fea dfbga bcedf fgadbce ea aebg bgfaed gdafec dbefa bdgcaf | abdef gdcafb dgbaf ebfad 433233236244364537664567776764977668967888876787887977898978679686668778764647857553662664333221513
eac afdecb dbegca acdfb dbacfge ea bcfea ebgfc fade fadcgb | fcbad ebcfa edcgba dacbf 112335142543334473565677774456986769698869989679787999966877889796668798648474667745633463364123315
agfdbc adcbg fdgc cdfeagb bgd eadbc edfagb dg abcfg bfaecg | cdfg dg gbeacfd bdg 113555236654542657737447854474695576987788777767987976776779677896568655666568777374452626625515123
fdbag gafcbe agfdcb bfc cdgf bdagef cfbda bdeac bcfedag cf | bdeca adfegb cbfad cf 335535115334436455537766485588496998559679678997888767666867796988758985466776445675326242423551222
agfdce ecd cbeadg ce bdagc ecagfbd bcegd abce bfedg gcbfda | cde cdbgaef ceadfg eabc 113534446446435634464566878474597579966586699697988866966997787776788976778774466655756463456235323
cgbda bceag bcgfde gdb dcabf dg badefgc gdae adbcge cabgfe | adcgb egdbca dgbfaec gdb 432234422656545375357656547448457656589888789768979867898878979959955468888683644466555336562315155
baefc gecfb bfadc dabcge cdbfage aeb ea bgafce ebdgfc efag | bfgdaec gcdebfa dbecgf dagcbe 313344415452422533675445775845665999956589788887986877769867786689888565577764433373633363624515141
bgdcfe cafdg cad acegf fgcadb fdcbg faedbc da gbecfda dabg | acd faecg afcdg fdbgc 222432351346446453465663784584875977688789959977876966969658866777886544775874577535665532224311252
gedbcf gef cfaedbg egbc ge gfcaed dcbfea fgbad dgbfe fecbd | eg gfe gcbe bcge 225114233145352533344653757488874695566977756698769768695668575699668757584555454357642544414312222
fca cbfge faceg fbeadg gdefa ac adcfbeg ceda cdbgaf dgaefc | gfabcd afc degabf fac 033415322244643242337557674678486867575857998965787859688788778777887745544746656765646262354135222
dacfb edbag ce abdfgc dcfe ebcda gecfab befacgd feadbc aec | cea dabcegf cea badfcg 244444135424622245536477356767676647596876888859989597677576756885858547856577434533266366252341111
edabgcf eadcgf dbgecf dgeca dcbaf adcfg fgd gf faeg decbga | bfcdeg dgfca edcafbg dcafbeg 043422441154553466473376764757644888596669857975585975898957778585855575867574554436566563342243533
abegcf bedaf fc ebadgc cbf fbcagd baecg befac defgacb cgef | ecbaf fbcdage cf bfc 331142132342425642446677456357664865566895568659588999997598897847485545576757377726563624233332331
acg bafgdc afegb bfacd bgeacfd fgdc cg aecdbf gdaebc cbafg | afdcb cbfgda acg abdfc 023252542543632422666654576368776445864568889675685656595757555564576478356355573264462564525315531
ca ace afcb afebcg ecfbg dabeg gfacde gbace cfgabde cdbfge | acbf cfegb gebad bacf 401013153355343645357335364463874854866687865999886679877556446867474565563474773455256232432344241
dgfcba fabcd cgbfae dbaegcf eadcf dagbc edbcag gbfd fb bfc | ebagdc fb edfgabc gadcb 021145311524153334266573666344586785645787666877957988698886547444446737764473344255436645355133043
gdaec dfgb dcgbefa bde ebadg cbfage cabfed efagb db bdgafe | bd abegf dbe deb 343022114235145422524664767447348848745548778464684486768568675765556575337775543626443412212441440
caebfg bf bgead dgecab bdaf bgdafe fbe dfgbeac bfged fgedc | cbgeda efdbg edacgbf feb 111402455441135334663624565477563468586767564584754776865658486876757446535673333342623334312243002
begca fbaedgc adbfgc adbecg bcaefg af afb cdbfe feag beafc | fadgcbe af bgdfcea af 300312451335434322222245676775746358685854756547745674447587647487533473336654232544332431554454412
dceab be gcbdaf ebc abfe bdfac cdbafe cagdfbe gbfced dgcae | acfgbed eb afbe eabf 433111155454541556355524273356653577688858857767884847858548544877576457444762553325524214215402141
fegdbc acfdb afgce badecf badg ebgafdc gd cgadf gdf dcabfg | agcfd fbdac gfd egbafdc 131233333423335563265232427676636343767667757678865557657665545337553674363435662333422331253432142
beagd fbcg gbecfad gc bacge adbefc aecfb acgdfe gfbcea egc | gc efacbgd agdeb cfbg 424110224332255444554444426563344537343587775787775766858448446366677553432226234426335534235001312
adcebf fgebadc ga ega bdga edafb egadf bcgeaf dcefg afdbge | abdg dbag edcfg fbegadc 333412002215124441543424366273747763767633456777658554454464446357566564765333524264253113145112300
fe efd egfbdac dcagf cgaebd cbfe gdceb dfegc efagbd fdegcb | ef gdaceb befcgd gdcfbe 101110030515255434456252656567734365435643756543777575374763565634563366532624443621453215143234300
badf bfg dafgebc gdabe edfbg bgfeac bf bdagef dbaegc fecgd | gacfbe bdagef cgaebd adfb 303322412424455315323623364345353365376676743654344676735433644466637676342646445331232331222232310
efdabg bedac fb cgedab cefgdab fcdga adfcb cbfe dfb ecfabd | bfd bfec debafc acbfd 323112211415542144152522545435246756534467755554567676637543357465766366552324534423444455001240332
cbdag fa bdfacg dgfac defbag cbaf gecbda agf dbegafc fgcde | gdcef cdbag gaf gcfde 104010010231221552145233456226456635564775656444567465773637433733444632663325561451234351230241312
cfagd fbagcde cb efdabc dgaefb cfbe adgbec bdc acfbd edfba | befc cfbe efbc bcd 121411232340543435321316435636242655564355535365574763633547465475523553325562122152444444042300041
bdcgfe acdbeg ac caed gdfba dagbc abc gbfcea ecbdg gbcdaef | aced dgbce cab gafdb 131012210332331125512334254246234345354543573744464635755354544666345534262435114123351541032131413
bgfd fecdgab eadcf acbged gd acfgdb cafegb cdgfa cgd cfgba | fdgb gecadb gd gdc 320204021134412321515435566234224352423426577577364457356445435455454244243342521425351312003010221
dbcfa gcebda becg dgeac dbe egadcf gdefab fgaecbd eb acdeb | bed cgbe ebd efbgdca 323114214132034241313542544555435465334424654666346364554655422236635456436354122354410044244241323
ebfd cgfdea fbdagec afbce bfdeac geacb fb dfabgc fbc dacef | fcb abcdef cfb fb 013302120424301452153353441245652435266525344656664634425626224355262362255351231351513443132401213
gceab bgef gbdca abdecf efacg ecbagf ebc cgdeaf eb gdfbcea | ebc fdcbgea eb fcedbag 320030122021334215313244242334523262333453263233364243362363226452453421344311524253311414201210001
cdfeg de edg dbcgaf defbcg cbfgd gfcdabe bdef gdebca efagc | bfacegd fdceagb fbed gcebfad 232000301112410134252124412414346224626463252363536262245565624425334453135542241232142142113023001
fecbdg fcagebd adbgfc ceba gecad dgfea egdcba dac gcedb ca | cdabgf edfacgb acbgde febacdg 023101113421202000305251552134255163452646652324334242436543224522235515444445314014323100240020120
gefacd febcga fdg gcfdb ebcgf cgdba gdcefb fd bfedgac bedf | bdagfce gfd bfdcge geacdfb 320223110031202012323335553432231212252653563665545464422324656333443431535442453303001103202231020
bacgfd ec cgbafe adbgfec acfbe fbeda eac ecgdba acbfg fceg | dcgaeb fcdgabe aec afdbe 102033222010100142203435155413125314311166645446465322244546532441244154143433143443342400201012012
egcd dfeca efagd fdcgae egf ecbdagf eabdfc fecabg dfagb ge | feacd eg gcde feg 103310002120123402241302221241151441435355114335344522434421453552354154135223134443030043002000021
begaf dcfegb dbcge gadcbef fc cdabfe fgdc decbga cfb becgf | bfc fc cdebg cgfd 112323110033212002113322411233332355223342424233213123445224135331545115152043042400020200022133330
cfbdgea fdg efbdc fgdecb gd gbeaf agdfcb cedg adfebc gfdbe | cfdbe afgcdb dfcebga dgec 022111301200101044211214231433231311322554214331413543414521424255241531111410022413003020200231110
fdebgc egba dcaebfg abfgcd ba bda gdceb cefda degcba edcba | dba bdafegc decba bad 012022111212202121003233141343155411314255551134343533133453252153433344441013011221420230021203220
cgeb bdgcfa dfgcb efcdg ge abfged efdac eabdcfg ecdfgb gef | cedfg eg fcade eg 221101122202110034040022441212441254112211113355531534335143125434435312222200311411322330203331100
eabdcg gceb ec ecfadg baecd daebcgf afdeb badgc bafdcg ace | bcdgeaf ec cebadfg ce 210122210200133032213341213111433213432513121525124133544144433541201142230241123430213303001122221
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

5
inputs/08a.txt Normal file
View File

@ -0,0 +1,5 @@
30373
25512
65332
33549
35390

159
src/08.cs Normal file
View File

@ -0,0 +1,159 @@
namespace aoc2022;
internal class Day08 : Day
{
private int[][]? trees;
internal override void Parse()
{
var lines = new List<string>(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}";
}
}