summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFederico Igne <git@federicoigne.com>2021-12-08 17:39:41 +0000
committerFederico Igne <git@federicoigne.com>2021-12-08 17:39:41 +0000
commit177c2419fa7c381311799cb8075d794c2298d78a (patch)
treea0f9830153a4de59152a4f8172df036e6822d6ef
parentc8734354d4d7cc4fb822f426ef9f32a787420bb4 (diff)
downloadaoc-177c2419fa7c381311799cb8075d794c2298d78a.tar.gz
aoc-177c2419fa7c381311799cb8075d794c2298d78a.zip
Day 8
-rw-r--r--day8/Cargo.toml9
-rw-r--r--day8/resources/input.txt200
-rw-r--r--day8/src/main.rs81
3 files changed, 290 insertions, 0 deletions
diff --git a/day8/Cargo.toml b/day8/Cargo.toml
new file mode 100644
index 0000000..02a9508
--- /dev/null
+++ b/day8/Cargo.toml
@@ -0,0 +1,9 @@
1[package]
2name = "day8"
3version = "0.1.0"
4authors = ["Federico Igne <git@federicoigne.com>"]
5edition = "2018"
6
7# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
8
9[dependencies]
diff --git a/day8/resources/input.txt b/day8/resources/input.txt
new file mode 100644
index 0000000..e079b33
--- /dev/null
+++ b/day8/resources/input.txt
@@ -0,0 +1,200 @@
1dcbgefa cebd bfega eadbf db cdfaeb dba bfcgda egadcf aedcf | egadcfb eafcd db debc
2dfea ea abe dfgaeb fdcgba badeg dcfbeag dbgaf bcged fcebag | gfadb dfagb fdgabe eagdbf
3cd gfcde cdbfage cbdfae edc fedgac gadc feagd febdga gbfec | adbfeg dbfcae facbde gcfde
4ecafb abgfc deacbgf fe fbe fgec edgafb cgbafd ebfgca ebcad | cfbae fbcga dfabceg ceabf
5eagfcd abfdecg fe fdae egf cfgda gcedb dcgabf bcegaf cegdf | gcfda feg efg cadgbf
6gfcdab efadc cadbgfe beca badfce ecfbd edcagf gbdef cfb bc | gdecbfa cbea gedbf aceb
7cgafb abgcde debfca ecafgd ecdag bcd dacbgfe gebd db cabgd | cfdaeg dcfeag cbgda agfcb
8cegba dg gbd feabgd fdecgb gbced fdbcae dfcg fbced gdceafb | gfecdab dbg dg fdceabg
9cebgdaf gbfaec cebg fbcag bac efagb cgdaf fcbade fgadeb cb | abcgf fdeabg dbafge cadgf
10aefdg ga becfagd dag gfdbe bgeacd dgaefb caefd cfebdg bafg | gda afegdb afdce efacd
11dfacgb afegc cbfgae dceg gcafbde dfabe gadef gd cfegda adg | bcafeg efadb efbda cgefa
12gbfae cbgf ceg dgefba cafde bcagde dbfaegc gefca egcfba cg | abefg agfbe cafgeb fgeadbc
13cabef ecdfbg gceabf facg dbage ecfabd eagbfcd gc gbc eabcg | bfedcg cfbgde acebg bcfadeg
14bcedagf abecf cdaebf gacb dgfec gaf gebafc bgfdea ag cefga | egfac dfcbea agf deacbf
15febagcd bfgcae fecab abcfde dgbec da fadebg ade adbce dfca | gbefdca aedfgb adebgf cbdge
16acb fgadc ebaf efdbgc ab dbgaec caegbfd fdcbe abcedf cfdba | ecdfb bfdcea ebcdga cedfb
17cbaeg befda bdagfe gd dga dgbae deacgf fbgdeac dfbg decbfa | gecafd gad ceagb debaf
18egd de bfadeg gcfbe gdbcafe bgfeca cedgfb cdagf edgcf bedc | cefgd ecgafb edg ged
19aebfgc bgf bcag fceabd gcdef becdafg befac gb fcegb badegf | ebfdga cgba gabecf cfedba
20abgdfe gafdc fdb egbdfca cgbaef edba egfba cgefdb bd agdfb | dfb fgdca cgafd fgdba
21agfeb dgafb agfecb gfcaed abegc febc ef fea ebfcdga bedagc | ebcadg eaf bafge gcaeb
22ba febcag gfbec fcab bgfecd dgeaf eacbdg fagedcb efgab abg | egfdbc geabcd cegbf ecfbgd
23fage egacd cdagb dcefag gcedfb efgcd cedgfba fdcbea dae ea | ae aed gfedbc faeg
24gefac cbe cb fgacdeb bceadg agfebc fedgca abfc egcfb ebdfg | egbfc fbdeg aefdcg gcbfe
25agbfce edbga agfde cfage afcged bgfcde bcagedf cdaf fdg df | bdcegaf dgefa eadgb fcgdae
26acebg ce bcadg gcedfb ebc bfeag degfba acfe bacdgef baefgc | aebdfg abgfe abecgf cgabd
27bgafd dgbae dbcfae acfegd bcfg cgafd fdbgca fb dcbgafe bfa | afdbg baf bfgc bf
28daebcf fcdgbe egfab gaedb da agcdbe dagc adebfcg bda cgbde | gfabe gdecab eabdg cdgbfae
29decbga bdac da cgdfe ebacg agbfce cagde fecbagd gda dfegba | da fcedg fcdge dga
30dfecba fbc gceab ebfg acdegb bf afdebgc befagc cgdfa bgfac | baecgd gacfbe bf cfagb
31bgefca agcbf dfgceab bcedfa ebafg fdgae feb dcgabf gebc be | agbfe be becfga gcbafe
32cbgaed gb dgb defcg gdfeb ecafgd dbgfce bcfg facegbd deabf | gdcef adgbec egdfb acgefd
33bcead bdecag adbfec gda gabe febgcda ag caedg gabdfc efcdg | ebag ageb cedafb edbca
34bg cdbga ebcg adgfeb dagbefc dbg caedg cgfdae acfdb geadbc | cabdf gbce bacdeg dabegf
35fecdgab bd gfcade agedf cafbg cagdbe adbgf gbd efbgad efbd | egafdc gfdea bfaedcg gabedc
36cfdgbe cgaeb edab gacde ebg be edcagbf edcgaf abfcg adcgbe | gafbc gcbaf adgbec be
37geb bdfg abced fdbaeg gdafe gfdecba bg gcedaf bdage ebfgca | cgefda egdbaf gdcfae eagdb
38cafbge cfdgb abfce aedfbg cade de beafcgd cdbef dbcfae def | dfbaec cfdbe gcaefb dgbfc
39bafce bcage ebcagfd fc decbfa bdcf fdaeb acdegf efc egbadf | aefbd abegc eabdf bfdea
40gc dfeacg ebfacdg ebcdfa bdfac gbcda fbcg dafbcg cag bdega | dcabfe cbfg fabdc gcfb
41fdaeb agbfe ecadbg efdacgb dbf debac cdaf dgcfbe dacbfe fd | abdfe gfeab fdac dfb
42cbfdg adgcb gfebc gedabc bdf df agcfbd dgaf gfdebac ecadbf | fcgbd bgdca adbfgc gfad
43bgf aefbg fgdcab ecbfadg eagbc bgedac fbec fgabec fb egadf | bfec afged ebfc gefad
44cgafdbe fedgab gafde adbg gebcfd efcag bcdfae fdg fdeba gd | fgabedc dg cegaf cfbaed
45bfecagd gcfdb ce fgabed gbeafc ecdbf bce deca acfdeb beadf | bce agfecb gedbaf dfbec
46dfb abcfge fdbage acefd cgbd db gefbc bcdfe acdgfbe gbdcfe | fcdbe fdecgb fgcbe fceda
47efdac gacbed cafeb fcgd fdaeg cd gebdfa fdbagec ecd dacfeg | edafcg deacgf eadcgb dgfc
48degabc egc cegfa gdefa gafbc ce cfed cagedfb aefgdc eafdgb | gdfeab agfcb gebfda fadge
49aegbdc dbgfec begac ef fdgca efc gacebf eafgc bafe edcfbga | acfeg bfgeca cef befa
50cfegdba bdage bgc faceb cbafge bdefca gdfabc caebg gc gefc | cfbead cg cg eafbc
51db bdaegf abd debgfac feacb edafg dfbcga dafeb agdefc debg | eafcb bafed dafgbe edfba
52dbegac efdcg ecdgfa geafc fabgdec efcab gfad ag ega dcebfg | defgacb efgcbd dagf fgad
53dafbe bdfgae cd cadfe ecfdab bcdefag gface dcfb acd cbegad | efabd dcbf decfbga dbgeaf
54ca gfbdc eadcfgb cfgade efac afdeg dcgaeb dgfabe gca gdfac | dacbeg gcefda cfdbg geabfd
55fbecag fdaegc gfade edcafgb ecf cfabd ecdfa gcde deafbg ce | ebfcga aecfbg cef abgcfe
56eadcbg ecd gdebf fgeac cd dcfb fecdg fdgaecb cdfebg afebgd | gdfec adefbgc febgcd bgfadec
57egfdca bfceg cfg cgabfe bfged bcadeg agebdcf cf bacf agbec | defgb cgbfade beagcf fgaceb
58ebdga efabgc abcfdeg fe gfabcd dcfag fgaed ceafgd fge cfde | acbefgd agecfd edafg gadfcb
59eadgc edagbf fbgd fadbce bg ebg ebdfa cfedabg cbfgea ebgad | aedbg egfdab cedbfa aecbfg
60gd cefga cdabfge dgfce afbdgc dacfbe fgdebc cdg cbedf gebd | dg febdcga bedg gd
61gedfb bcfgde cbfde cebg egf adbcef edgcaf cgdeabf eg gafbd | gdbef abecfd ge feg
62bdacfg cba ab gcdefa cdbeg acgef egcfbda gafebc abfe caegb | cafeg bgcea gface agbec
63fcabdge gdceab bdgcf ecfdb cgd cgef gc cfebdg dgfab adbfec | dgc gdcfbe gc fegc
64cgbd gefbdc cdfeg gaecdf gfbedac cebdf faecb dbf db gedfab | cbdef bdf ebacgdf ecbfd
65fdecbg bagcef beagc dbgfaec edagbc dgafb eafgb efg ef acfe | cgfaeb ceaf dbcgea gfbae
66cfdae cefg acf bcaedg aecdg eadbgfc fc dbafe bfadgc defcag | efgc cfa ceadbg cfa
67egc bgadef fcbdg cgdfe cdafge ce gadebc begcdfa faedg efca | efadg cdeafg cgfdb faegdb
68ed agdbc bedcg cfageb edfb fgbdec ged dfaceg aedcgfb gfceb | de debf agdcb fdgaec
69beadgfc bc fabc cbeda dbefa cfbead ecfgbd cbe dgeca ebagfd | dceba edcafb cadgbfe daceb
70dgbcef afdbc fgdaeb ef edf edcgb eabcdg gbacfde cefg cfedb | ebfcd gbfedc bafcd ef
71fecgb gbcfad aebdgc cgbaf cfedag gbcad afg fa afdb cafedgb | afdcge gdbacf acgdb gcdaeb
72abd cfeadbg agedbf ba fdaeb fbga fcdae dabgce fcebdg edfbg | dfegcb dcebgf befdcg bfade
73gbacfed gdbce gdaec fcedag eb cgfdb adbe ecb eadgcb fegcba | acebdg egbfac dcafge fbdgc
74fbea fa acgbdf bdcgfe deacg daf fbged ceagbfd fgade gedfab | bcgfaed af af dfa
75fedbgc dfgea gbdefa bagd egacbdf bceaf aegbf gb ecdgaf bgf | bg caedfg aefgdbc bfg
76dabcgfe dbfce cgeda adcbe bgaced eab gadb fdgcea ba bcefga | cdbae ba cfaedg cdaeg
77bed bagedc agebd feagcd edcga bdac bgfaedc fbega gebdfc db | debcfg cagbde egadc dceag
78afgcb agef badcf ebfagc befcgd gfb fg fdagbec gbcea gecbda | gdcfeb bdfceg cdfba cegfdb
79cdbegf abgfedc geabcf dgefa fc cagdbe cfe fagce cfab gabce | cfba acfb cf bagfedc
80ecbga abedgc fce gbacfe aecdgbf afcb eagcf cgefdb fc adefg | afdeg dcfabeg bfca gdacbef
81cedfg gaedb befcadg gaced cadfeg cabdfg ac adc befdcg ecfa | egbad cafgbd egfdcb dgecf
82agbc cegda bdecfa edgfb gdbace adb ab bgfdace gcdefa ebdag | abedg ba gbdae geacd
83cefbg gaed gadfb gfabdce egfdb edagbf ed dgbacf deb dfebca | ebd cefadgb ecfbgad bdacfg
84ea adbfc defcgba eafb dgfbac edacbf fdcge ace fadec aedgbc | ea cfdea bagdce fdegc
85cedfg cea dfabecg efgcab fcgea agbfcd feab facbg ae gadebc | bafgcd ea cdbeag gcafb
86bgcd cb dfbac dcagefb gdcfab acefgb cbf acgfd adfegc bfaed | cbfgad fgacd cfdba gcbd
87gebcfda dabcg bgdaef dgc cg gfbad eacdb fgbc cgfdba gfadce | agdfb befdag gcd dbagf
88cbedgf fcg degacf agcdbe dbcaf gbdec dgbcf bgef fg fbadegc | gadefc adcbf acdbf fbcda
89egadf agf dcga cbfedg ceafgb ga cdfaeg dafbe bacfedg ecgfd | feadbcg gcad agf fbead
90agcbfd cdbge afecdg adfe gafce agd facgedb da cdega feagbc | faegbc gdcbfea cegfa cbfeag
91egc bfcdea gbfe afcgeb ge aebcf adgcf adgcfeb dabgce agecf | cgabde cegaf fcaeg gfceba
92bceda bea fdgcae eb eafcgbd egadc fcageb dbacge bdeg bcafd | bcfad edacb cgefda bgfaec
93fgabd bdgefa cagdf gfb fbaceg efdb cbagde fb afgedcb edagb | gdfca gadeb agfdc ecdbga
94ab gafdbc ceafg dgaecfb feagcb efcdag dbefg caeb baf efgba | abf abf agecbf fedgb
95gbdface gbadce gaedc cfagbd cbdga eda ed gcfae bgfead decb | cbed fbdcage dbgac acbegd
96fcda ecgbdf df abefd ceafbd cfageb dageb cabef dfe edacgfb | gedba eabgfc fd acgbef
97dg egbafc fdbaecg decg fedab agcfdb cbgea cegadb egdba bdg | dg gaebc cdeg gedab
98fcbd db adfgc fdbgca gaefb bcfadge dfgab bda dcebag gacfed | geadfc bd adb bfagdce
99ecdgb beagc gbcedaf dcbgfe bgfadc faebc ag acgdbe egda cga | gceab eadg gaed dacgbf
100degcbfa febdgc egca cgd dbcga gaefdb bdgae cabdf cg dbeacg | dcbgef deagbc baegcd acgdb
101fbc gfdeba gbefca deafb decbaf agdcf cb cfdab edbc dcegafb | abgfed dfbca bcdfea dabfe
102de gdefacb becdag begac eabfgc ebdc edg aedfbg cfagd caged | bcgfea deagcb bced cbed
103bafc gbafed gfb fgaebc fb aegcf fcbaged afecgd befcg cbegd | gfaec fbagce agfedb cgebaf
104edcgab dgfb dagef bcfgae fg eabdfg defca degba efg cgdbafe | bdage gdbea bfgcdea aegfdb
105ceafg fca fcabge cgedf dbfacg af fgbcade cedgab abceg feab | eacgf fbcgda fca fdcgabe
106gfacd gcbd afdbgc bafecg bc eabdf abc acdefg aegfcdb bfdca | bafcegd facbd bca cdgb
107bdafge edfgcb cdf becf fgbdca efdgb egacd fc ecgdabf degfc | egabdf dbefga cafbedg fgcdeb
108bd bcfagde fadb efbdc cedfab aecdgb eadfc bdc cgfbe gfdcae | dfab cbfeg bd efdca
109cf gcfdab bgfadce cadegb adecgf fcd eacf eagdc fgedc fbged | gedbacf ecgad dfabgce degac
110afbceg fge fe becga cfae febgdca fdgab fcbgde bcaegd baegf | baegf ef degcfb eacbg
111gae cfgadbe feagc adgf adfbce fdcgea ga beagdc feadc gcebf | adfg eag edfca ga
112ecdb cd cfadbe febadg agecbdf dfbae cfabg dcf afdbc aefdgc | dabfce adfbce cebd cdf
113dcebaf ebdac ged bdag bfceg bdeagc bcdge ebdcagf dg gcfade | bdga fcegb gfcaedb gbedc
114fcdeagb cgbd cgf abdfge cdfagb afbdg bafce bgcfa defcag cg | cgf cfdgea fdagce gfabc
115becdgf gd bgfdca gfd dabcef gefca adbg facebdg afdgc bcdaf | acbdef dfacg dgf edgabcf
116fbaegcd egcfa faebc cdabf efdb fabcgd cbe daecgb bcadfe eb | eb fgadcb dabfc dgceba
117decafb cabfd fg ebcdfg facgd dagec fgba fbcedag gcf gacbdf | cadbf gedfcba fbacd cabfd
118dgface dfabe dfaeg fg gdbeca fge gcdea gfceabd fcga efbgcd | becdga bcagde fagdec afcg
119ceadb gdefbc cegdbaf adc bfdea cebdag acgb ca gcafed cbdeg | dac bcedag cbeda cabg
120fdb dcgfaeb bgadef fbcdg bdce afcbg bd gfeadc dfgec fdgecb | bcagf bdaecfg ecfgadb bfd
121gdefa bg egcafdb egbafd dbfegc afgb ecfgda abedc dbg dabeg | fdegbc eadgf afdeg gb
122bfcad bag gbec agedc agfdceb gb fdagbe begdac gefacd gbcda | acfbd gba dcbag abcdf
123aeg bdcega ge fgcda bdcae afegbd ecdga ecabdf egbc dbeagfc | ecabd edcbga agbfdec afdbeg
124fgdce deca agfedc bdfeagc bdcfag eagfb dga cgdfeb adfge ad | gacedf agbfe aegdf fcegda
125bafg ecfbag cabfe cadfeg fedcb eabcgd cagfebd agebc af fae | aegdbc afgedc feacb fa
126bcgdfe cabg cfaedb gc cfg efbdagc fagdc eagdf fcadb dbagfc | cfgdeba efcgbd bcadf dgeaf
127feadcbg egfba fg begfdc gafd debfa geabc bfaegd gfb ecbfad | cbagedf ecdbfag dfebcg gf
128ea gbdeca egbdc bdcea aebg cbadf fdeacg cedgfb cedfgba aec | ceabd gbdaec ebag fadecg
129bedca dcbaef dfcb feb baecdg gbacfde afegc bf ebfac ebfadg | ebdca gcdbea fbe geacf
130bafgcd dcb cgead dcgbef afcbg db adcgebf bdfa gbecfa bcadg | gcbadfe agbdc gbafc bcd
131cg cga edcfab ceadbg acdgfe gfcd gafce eafcd egfab dfbgeac | efagc bfeagdc fdebac aedbfc
132ebg dafeb cdabg agdcbe geafdcb agec gfdbce bgdfac eg gebda | ebgad ge bceadg dbfea
133cfdeg acebdg abcfdg befdg bgf beadg fcbgade fabged abef fb | decgf bfae fcdge fgdeba
134gdfeab feadc abgc ebgdcf dcgbaf acfdb ba bafcdeg gdbcf bfa | cbdfa fbegda gadebf afdec
135bfecdg dbf fgbce gdefba dbec gbfeac db cgdaf gbdcf agfdbec | febcg gcbdf eafdgb bfgec
136caebg gdcfa fedcabg dce dafe cfbdag de egdac fgbced gecadf | fcgebda cgfad edc gbdcefa
137edcgab dcfeabg dfbga afbdcg bdfe egfab deafbg egb eb feagc | badfeg bcgead eb abfdg
138bc geacbf gebca bdgafe fbceda bce dfacegb degca cbgf abgef | bgacedf bcega gafdeb cgabe
139gfdcaeb ceagf cgf dcag efcbdg ecadf cg efbag gdfaec bdfaec | eafgc cafeg gc dgcbfe
140fdgcab bdgfc dcfgeab daefgc fgbdea bfgec gdb db cbad fadcg | gdb bgd dfcag bgaecdf
141ebca fagedc cb bcefgd cefda acbfd deacfb bcf bafdg ecgfabd | cagedf fadec fdcae fdeca
142dgacef deacb dac afgdecb fdcaeb dabeg acbf bedcgf ca debfc | bedag fgdcea acdbe bgead
143bdcaef cdegfa egfdba cfd bfec egfbacd cfdba fc cgabd bafed | daebf bdacg cbfdgea bcdfa
144ac cab ebgfa fcedb cbedgf dbcfea gbdfeca ecafb fcda gedbac | baefg ca ca bdcfe
145afcbge fedbca fagebdc abdce dacegb aefd fcdbg fa cfa cabdf | af af beagfc abecd
146edacg afdgce fcagedb degcb deb db faegbd abdgce bacd gfbec | egcdb dabc dabcge edb
147cgdab efabdgc bae bacefg efgbc fcea fbcdeg bgeac ea aebfgd | ae cbgae dbfeag fcegb
148acfed eg dgae fbceda gce dgface ebafgc fgdcb cedgf fdgcbea | fbcdg fdcaeb caegdfb cgabfe
149dcgab cae ae eabgc gedfca defcgb fedacbg efbgc bfea eacgbf | cgdab ebaf bdcgfe eac
150gafbced ceadfg gabfc ae cgbfae febcd cefba cfgadb bgea ace | fbdce eca bgafc afgdcb
151bgd edfab acgfbd dg gdac dbfga bcgfa gdbcafe bdcefg ebfgca | abedf dafgb abgfce fagbec
152adbegf bgace gdfae afc fbcaed gcdf cf faecgdb gaefc cdaefg | cfa ceafg abdcfe agefdb
153fdgcb adg cbefdg cbfadg adgcb dcfage ga cgbfdea bfag aedbc | gdfcea fecdgb acbgd bgdfc
154febgdc gb fbecd fbg cgeabf agfed bdfeg bedcaf fcgdaeb gdcb | febgd cfabed cedbf bdfge
155dbgcf dfg dgcafb bdcag df efdacg dcabeg facegdb adfb gbfce | fgcdb dcfgb agbdcef gbcef
156abfdcg gbfea ceabgdf gedcbf ec bec cgfdb bgfce ecdf acgebd | cagdfb ebc dfgceb ce
157bdafc fbaeg dcagfb cgdb adg dg daefbc bdgaf dacfebg efadcg | dbgc bcfad aegfb adbcf
158cdagfe cdegb dbe defcg gabec gfdcbae bd efbdgc bcadfe dbfg | eacfgd db db dbe
159fbcegd bdfgc cf gbecafd gdcba fbc fgdeb cdef gadbfe acbefg | gdbfe gadfeb dbgfc bdfgec
160abcegf cbfad eb fabcedg efabc ceb gfbe degafc gfeac abgced | agbcde ceb gfbe beacf
161fgdc gbf fgcbda cefbga facdb gadbe gf bafdec gbdfa aebgfcd | fbg gdcbaf efcbad fgaecbd
162ecadbf dcfbga bcdgeaf afgc adgcb bcf fbgde cf dgbaec cbfdg | eafbcd cf abcdgf dfebg
163beafg edfgba fbacgd fcbeg ebcagd bdagf ea bae efad cgbfdea | afebcgd cfgbad efcbg bgdeaf
164faegcb gefdb gdefcb dfcga dbfga fgadcbe ba bfeadg adeb abf | bfagd fgbedc ebfdg gfcdbae
165adebc gacdeb gba aegbd cgefba ebfgdac acfdeb agdc ga bfdeg | ecadb dbefg fbgcae gcdafeb
166gf dfbgec cdbef dgfb gcebdaf efbgc aefdcg bdaecf gef caebg | cdafgbe gfe cgbfade fbcge
167cba ebfga ac agbdfec becgd cabdeg fdebgc daec gfbdac bagec | ca ebgcd ecbdgf fgdbce
168gcafeb dbceg edga bcgdaef de bcfaed ced abecgd becga dcbgf | agbcfe aedg ed aegbcf
169cbeg bcafg bgdaf ecgfba agc beafc ceagdbf cdegfa cg dfecab | gebc debcagf cg gc
170dbaecgf gacbf gce bcedag bcgef dfceb ge efbdac degf dcfgbe | ecg defg ecfgb bfecd
171ga gfceab bgdeafc acdbf bgcfe cbedga fgae bafcg fecbgd gba | acgfb ebadcg fcbad bcagf
172cadb edbagf gdcbfa dgc cdfga adfbceg fagbd fgeca dcbegf cd | gbfedc cdebfag debfcg fagbd
173fbcgea bacgedf gbce cdfagb eba be gbcfa egdabf cbafe acefd | eacbfg abe cegfba ecgb
174bfcag gdba ba adfegbc eafbdc bfcdg ecagf bac fbgcad gcdfbe | bgadcf ebgcfd acb gbfced
175ced geabcd dcaebgf fgaecb begac cadb cd cgdefa bdgec dfbeg | beacdg bdaceg fgcaedb cbeagd
176gdacfb bfdgc gfaec ebfdcag fegbc cfgedb acdfeb gedb be cbe | bgfec be gbed egcaf
177efcda abf gfdaeb gedcbfa abcdg bf bcdfa cfeb eagfdc caefbd | gabdc fecdag bgdfeca bdegaf
178efcab gefcadb dcbge cagebd gfdb feacgd efd bdcefg df befdc | fbdce acfeb cdebg fd
179gafbecd dacg efgbd dcfge ecdaf gcf cedfag febcga cg dbcefa | fdaebc gc afgceb gecfba
180ebgcd fgba dbcgaf cgbad gac gdbceaf cfdba cgaedf afdceb ag | abgdfec cegdb cag fbag
181ecbgf efac bgade bacedgf begca agbcef gbfedc agc fcabdg ac | aefc fbcadg afbcgd dgcaefb
182fab cafgbe face acgbedf eagbc bdgafe egcabd fbgca gdbcf fa | cfbgdea acbge cagbe fcea
183fedac ec gced bacgfe acdbf begadf gedbfac cae fdaeg cgdaef | dfcgea dafge aefgdb fadge
184gbcade fe afbgc cedfga bdfe gbfae fae fdbega dgbae cdbagef | egabf aef abgef efbd
185fagebc fad dcfab acdbfge ceabf egadbf edfc dbafec fd gdbca | bafec dbgafe fd eafcb
186afg ecdbag fcage dbgefa abefc gfdc fgcbdae fg fdecga gdeca | deacg fagdce cefag edfgca
187badfc gcfdea db fedcgb abde bcd fdecgab deafc facedb fgabc | fbcgde abgcf gabfc aedgcf
188bdaefc daecb gfcad aebg edgbac gbfcde bg cbadfeg gcb dbcga | bega cfabed cedba bgae
189afdbec ge aeg cdagb egfb cebadfg egbda agfdeb facdge efbad | fdbeac agbdc ega cagdb
190cfe eagfd bacfg egdfba edac gefca gecdafb eacdgf egcdfb ce | cfgbde fbgca efdbga daec
191abfcg bdcegaf ecbfg bafecd gcda dfcab cagfbd edgabf ga gab | dacg gacd gacd bfgca
192egbac ec cbdgfa ceb agdcb bagedc cdbaefg gbaef fcbade decg | dfacbg bafge ce efbag
193bd bdafce gcdfe fdcbg bfgca dfbceg dbf gecfda dgbcfea gdbe | edfcg fcdge fbcgde gcedf
194eafcbdg eagbc gcaebd cfegab dfeca bgfedc cfb befac bfga bf | bgdace bacfe fb feagbc
195bgedfc bgafedc adc bafec gcdeba egbcd dbeca gcafbd gead da | gdefcb gecdab cbfged gcbde
196bgec eb fbgea aeb ecagf dabgf cdfage bfdcae cebgdfa fabceg | cgadef begacf afgbe egcfdab
197fe fdecabg ebcfa bgcaf ebcgfa aebdc begf fcedga fdcbag aef | bacde fae fegb efa
198gdefbac dgfecb afdg gcfbad gcd ecabg gd afcdb bfdcea gdcab | acdgb dg dcg dafg
199bcaefd aceb dagecf ea cgebafd eda ebgdf faedb dbafc bgdcaf | facbdg aecb aebc gdefb
200cafdeg egcfb ge afedcb egba acgfbe cebadfg gbfdc baefc egc | ebga ge ecg aecfb
diff --git a/day8/src/main.rs b/day8/src/main.rs
new file mode 100644
index 0000000..8e90063
--- /dev/null
+++ b/day8/src/main.rs
@@ -0,0 +1,81 @@
1use std::fs;
2use std::path::Path;
3use std::collections::HashMap;
4
5/* AOC21 Day 8: https://adventofcode.com/2021/day/8 */
6fn main() {
7 let input = Path::new("resources").join("input.txt");
8 let content = fs::read_to_string(input).expect("Unable to read input file");
9 println!("Ex1: The result is {}", ex1(&content));
10 println!("Ex2: The result is {}", ex2(&content));
11}
12
13fn ex1(content: &str) -> usize {
14 content.lines().flat_map(
15 |l| l.split_once(" | ").expect("Malformed input").1.split_whitespace().map(|d| d.len())
16 ).filter(|&x| x == 2 || x == 3 || x == 4 || x == 7).count()
17}
18
19#[inline]
20fn parse_pattern(pattern: &str) -> (usize,u8) {
21 (pattern.len(), pattern.bytes().fold(0, |a, b| a + (1 << (b - b'a'))))
22}
23
24fn decode_patterns(patterns: &[(usize,u8)]) -> HashMap<u8,u32> {
25 let mut map = [0; 10];
26 patterns.iter().for_each(|(l,e)| {
27 match l {
28 2 => map[1] = *e,
29 3 => map[7] = *e,
30 4 => map[4] = *e,
31 7 => map[8] = *e,
32 _ => {}
33 }
34 });
35 patterns.iter().for_each(|(l,e)| {
36 match l {
37 5 if (e & map[1]).count_ones() == 2 => map[3] = *e,
38 5 if (e & map[4]).count_ones() == 2 => map[2] = *e,
39 5 => map[5] = *e,
40 6 if (e & map[4]).count_ones() == 4 => map[9] = *e,
41 6 if (e & map[1]).count_ones() == 2 => map[0] = *e,
42 6 => map[6] = *e,
43 _ => {}
44 }
45 });
46 map.iter().enumerate().fold(HashMap::new(),|mut m, (i,v)| { m.insert(*v, i as u32); m })
47}
48
49fn ex2(content: &str) -> u32 {
50 content.lines().map(|l| {
51 let (patterns, digits) = l.split_once(" | ").expect("Malformed input");
52 let patterns = decode_patterns(&patterns.split_whitespace().map(|p| parse_pattern(p)).collect::<Vec<(usize,u8)>>());
53 digits.split_whitespace().map(|p| patterns.get(&parse_pattern(p).1).unwrap()).fold(0, |a,d| (a*10)+d)
54 }).sum()
55}
56
57#[cfg(test)]
58mod tests {
59 use super::*;
60
61 const INPUT: &str = "be cfbegad cbdgef fgaecd cgeb fdcge agebfd fecdb fabcd edb | fdgacbe cefdb cefbgd gcbe
62edbfga begcd cbg gc gcadebf fbgde acbgfd abcde gfcbed gfec | fcgedb cgb dgebacf gc
63fgaebd cg bdaec gdafb agbcfd gdcbef bgcad gfac gcb cdgabef | cg cg fdcagb cbg
64fbegcd cbd adcefb dageb afcb bc aefdc ecdab fgdeca fcdbega | efabcd cedba gadfec cb
65aecbfdg fbg gf bafeg dbefa fcge gcbea fcaegb dgceab fcbdga | gecf egdcabf bgf bfgea
66fgeab ca afcebg bdacfeg cfaedg gcfdb baec bfadeg bafgc acf | gebdcfa ecba ca fadegcb
67dbcfg fgd bdegcaf fgec aegbdf ecdfab fbedc dacgb gdcebf gf | cefg dcbef fcge gbcadfe
68bdfegc cbegaf gecbf dfcage bdacg ed bedf ced adcbefg gebcd | ed bcgafe cdgba cbgef
69egadfb cdbfeg cegd fecab cgb gbdefca cg fgcdab egfdb bfceg | gbdfcae bgc cg cgb
70gcafb gcf dcaebfg ecagb gf abcdeg gaef cafbge fdbac fegbdc | fgae cfgab fg bagce";
71
72 #[test]
73 fn example1() {
74 assert_eq!(26, ex1(INPUT))
75 }
76
77 #[test]
78 fn example2() {
79 assert_eq!(61229, ex2(INPUT))
80 }
81}