From b62022ff07e5dc174e1de5ec8fc2213d496fc292 Mon Sep 17 00:00:00 2001 From: James Griffin Date: Wed, 8 Dec 2021 14:51:00 +0000 Subject: [PATCH] Day 8 solution --- README.md | 11 +++ eight/display.go | 195 ++++++++++++++++++++++++++++++++++++++++ eight/display_test.go | 58 ++++++++++++ eight/input.txt | 200 ++++++++++++++++++++++++++++++++++++++++++ eight/main.go | 26 ++++++ eight/test_input.txt | 10 +++ main.go | 3 + 7 files changed, 503 insertions(+) create mode 100644 eight/display.go create mode 100644 eight/display_test.go create mode 100644 eight/input.txt create mode 100644 eight/main.go create mode 100644 eight/test_input.txt diff --git a/README.md b/README.md index fb0f64b..f5b300b 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,8 @@ After generating a new package update [`main.go`](main.go) to include a `` ## My Solutions +These solutions are based on my input values provided to me. The inputs I was provided are also included in this repo. + ### Day 1 ```sh @@ -82,3 +84,12 @@ The solution for "seven" is: Used 357353 fuel to align Used 104822130 fuel to align ``` + +### Day eight + +```sh +$ ./aoc2021 --eight +The solution for "eight" is: +There were 476 instances of digits 1, 4, 7, or 8 +The sum of the decoded output values was 1011823 +``` diff --git a/eight/display.go b/eight/display.go new file mode 100644 index 0000000..960d173 --- /dev/null +++ b/eight/display.go @@ -0,0 +1,195 @@ +package eight + +import ( + "bufio" + "os" + "sort" + "strings" +) + +const ( + one = 2 + four = 4 + seven = 3 + eight = 7 +) + +type output struct { + signals []string + outputs []string +} + +type display struct { + outputs []output +} + +func (d *display) load(filename string) error { + file, err := os.Open(filename) + if err != nil { + return err + } + defer file.Close() + scanner := bufio.NewScanner(file) + for scanner.Scan() { + o := output{} + + insOuts := strings.Split(scanner.Text(), " | ") + + o.signals = strings.Split(insOuts[0], " ") + o.outputs = strings.Split(insOuts[1], " ") + + d.outputs = append(d.outputs, o) + } + return nil +} + +func (d *display) uniqueOuputs() int { + count := 0 + for _, o := range d.outputs { + for _, s := range o.outputs { + switch len(s) { + case one, four, seven, eight: + count++ + } + } + } + + return count +} + +func (o *output) decode() (value int) { + decoded := make(map[string]int, 10) + twoThreeFive := []string{} + zeroSixNine := []string{} + + sortedSignals := []string{} + for _, s := range o.signals { + segments := sort.StringSlice(strings.Split(s, "")) + sort.Sort(segments) + sortedSignals = append(sortedSignals, strings.Join(segments, "")) + } + + // Find known digits + for _, s := range sortedSignals { + switch len(s) { + case one: + decoded[s] = 1 + case four: + decoded[s] = 4 + case seven: + decoded[s] = 7 + case eight: + decoded[s] = 8 + case 5: + twoThreeFive = append(twoThreeFive, s) + case 6: + zeroSixNine = append(zeroSixNine, s) + } + } + + // Decode twoThreeFive + twoFive := []string{} + // Find 3 string + for s, v := range decoded { + if v == 1 { + for _, v := range twoThreeFive { + sharedSegments := 0 + for _, segment := range s { + if strings.Contains(v, string(segment)) { + sharedSegments++ + } + } + if sharedSegments == 2 { + decoded[v] = 3 + } else { + twoFive = append(twoFive, v) + } + } + } + } + // Find 5 and 2 string + for s, v := range decoded { + if v == 4 { + for _, v := range twoFive { + sharedSegments := 0 + for _, segment := range s { + if strings.Contains(v, string(segment)) { + sharedSegments++ + } + } + if sharedSegments == 3 { + decoded[v] = 5 + } else { + decoded[v] = 2 + } + } + } + } + + // Decode zeroSixNine + // Find 0 string + sixNine := []string{} + for s, v := range decoded { + if v == 5 { + for _, v := range zeroSixNine { + sharedSegments := 0 + for _, segment := range s { + if strings.Contains(v, string(segment)) { + sharedSegments++ + } + } + if sharedSegments != 5 { + decoded[v] = 0 + } else { + sixNine = append(sixNine, v) + } + } + } + } + + // Find the 9 and 6 strings + for s, v := range decoded { + if v == 1 { + for _, v := range sixNine { + sharedSegments := 0 + for _, segment := range s { + if strings.Contains(v, string(segment)) { + sharedSegments++ + } + } + if sharedSegments == 2 { + decoded[v] = 9 + } else { + decoded[v] = 6 + } + } + } + } + + for i, signal := range o.outputs { + scale := 1 + switch i { + case 0: + scale = 1000 + case 1: + scale = 100 + case 2: + scale = 10 + } + + segments := sort.StringSlice(strings.Split(signal, "")) + sort.Sort(segments) + sortedSignal := strings.Join(segments, "") + + value += scale * decoded[sortedSignal] + } + + return value +} + +func (d *display) outputSum() (sum int) { + for _, o := range d.outputs { + sum += o.decode() + } + return sum +} diff --git a/eight/display_test.go b/eight/display_test.go new file mode 100644 index 0000000..0e7213e --- /dev/null +++ b/eight/display_test.go @@ -0,0 +1,58 @@ +package eight + +import "testing" + +func Test_read(t *testing.T) { + d := display{} + if err := d.load("test_input.txt"); err != nil { + t.Log(err) + t.FailNow() + } + + if len(d.outputs) != 10 { + t.Logf("Expected 10 input sets, found %d", len(d.outputs)) + t.Fail() + } + + if len(d.outputs[0].signals) != 10 { + t.Logf("Expected 10 inputs, found %d", len(d.outputs[0].signals)) + t.Fail() + } + + if len(d.outputs[0].outputs) != 4 { + t.Logf("Expected 4 outputs, found %d", len(d.outputs[0].outputs)) + t.Fail() + } +} + +func Test_uniqueOutputs(t *testing.T) { + d := display{} + d.load("test_input.txt") + + if count := d.uniqueOuputs(); count != 26 { + t.Logf("Expected 26 unique output digits, found %d", count) + t.Fail() + } +} + +func Test_decode(t *testing.T) { + d := display{} + d.load("test_input.txt") + + o := d.outputs[0] + + if decoded := o.decode(); decoded != 8394 { + t.Logf("Expected output of 8394, decoded %d", decoded) + t.Fail() + } +} + +func Test_outputSum(t *testing.T) { + d := display{} + d.load("test_input.txt") + + if sum := d.outputSum(); sum != 61229 { + t.Logf("Expected outputs to sum to 61229, calculated %d", sum) + t.Fail() + } +} \ No newline at end of file diff --git a/eight/input.txt b/eight/input.txt new file mode 100644 index 0000000..fdd5187 --- /dev/null +++ b/eight/input.txt @@ -0,0 +1,200 @@ +dbc gfecab afcdg dfebcag bd dgbe bcaeg dcefab ecgadb agcbd | acdgb gbcda gdecfba bacge +bacdegf aefbdc ebf fdbcag edbfa gdaeb acfdb cdegbf face fe | ebf ecdabf fcbad afcdbg +cabgde gd becgfd dgfe cebgf gfdeacb fdbac bcgaef bgdfc gdc | cbfad dg dgef ecfbdg +adecgf egfdc cgeadb adbfce dafg bcfeg dge dg fadec dcbegaf | dg dcegf cdgafe gbacfed +badeg gdbfcea acgef fgdc bgcaef cd ebcfda gadce edcgaf edc | dce efcga dbgea dc +bgfec dbfgec ebgafc afegcdb fca af cgdabf aegf badce cfabe | caf ebacf bafgec cbfeag +begacd bd cfadbeg fbecg begfd bgd cdfeag gbaedf fdba agefd | cbgfe fdab efbdg bd +bg gfdebc beg gabd fcbae fgaeb afegd gafdce dacbfge efgbda | gdba dfgae dgba gb +cfd edcfbg abfcg gfdcb gbcefda dgcbe defg df acebfd caedbg | agedcbf dgbfaec gbfecd cdf +bdcag acgebfd eac ae bade abcdgf bdacge bcgea aedgcf efcbg | cfdagb degacb eac edab +ga ebcadgf gdaf bga fgecb dfabcg adcfb gadecb fecdab gbacf | fgda gdaf agb gfda +gbcdaf fabdceg gbe ebfgad bfdga eg cefabg fdge adegb cedba | ge fcaedbg ebg aecbdfg +ab bdeag gbdefc cgafdb fgedb agb befa bagfdec ecgda agfedb | ab aefb abg ab +fgceab fcgdb fdcebg cbf gafbd cegfd bced cb cadfge cbdgafe | ecbagf cbfdeg cb bc +fgb eafdgcb cefg ebdgac fcbged fbade fg gbfed gbecd fcabdg | fg eadfcgb fgcbda gedcb +ecgfda faebc cb fadeb adecbg edfgabc bfgc cab gecaf ecbfag | fcgb bca gbcf cgbf +gfaed cg cgab abdcf fabcgd gcfda fgc fdgacbe cbdaef fcebdg | fgc cfdageb cbfgad degfa +fbacd gedfac fadegbc gbf degb ecgdf gb bdecfg gcdbf efbcag | cgedfb gb bcdfa cfdagbe +dceg deacbg acfbeg egdafbc ebfda dc bcd cgabe gbdafc dbace | cged fabegc febad ebgcfa +gbdcae cfgade dc dgbface fdage cbgfa adc gdafc dcfe gbdaef | fedc adgcf fcde dgacbfe +afdgbe cgfabe dcgeab aef feacb fbgcade bgace cgef bcafd fe | ebacf abfdegc dbfac facgeb +fbeg dgfecba cfgabd eafcb gb edacg gecfab aebcdf ebcag gcb | cfadeb gecda bg gb +bfcaeg gd fbagc fgad fgcaedb fdgbac cdaeb dgfecb cagdb bdg | cbfgda dg afcedgb egfacb +gd dcafgb dacfbe edbgacf gfbdc fbceg dbg dfag bdfca begdac | aecfdb eagdcfb fdcbgea fgdbc +gf dfgc ebfgac bfdace gabfd adgfbc acbfd ecfagbd bgf aedgb | dfgc fdcg gfb gbf +gbdae ebadf dbcfag acfdb dfec feacdbg geafcb dcbafe fe fae | efa bdcfa eaf debacgf +deafgc fbgedca gfd dcga dcgbef aecfg dg agfebc adgfe dfabe | dgf badgcef fgace cabefgd +badcg bagdce bdafgce efgbc df cbgfda cfdbg edgfac fgd adbf | dfcbg df cgbdae bdfgc +dgabe beagc gbd gfcbdae gd bdegfa bgfedc fbcdae bafde fagd | bcdfge bgd bcage dfga +adgf adgfce aecfg cdega dbgaecf abcgfe egd egcdfb dg deabc | cdgae dafg dfag afdg +fbadec afcbg begac be ebcgda dceag edgb efdcga ebdacgf cbe | adfcebg ecafbd debgac edcafg +cbd dcga cagbf dcafb cd cdebfg dgafcb baefd cbfaeg cfdgeab | fcdab geacbf gfbdce dgcafb +becd abfdc cgbaf efcda bd ebdcaf gdfaceb bdf bdgeaf cedfga | ebdc fbd bdf fbgdae +gefacd adcg fedbc cdgfe egd dg dbfega cgbfeda aecfg bcefga | defbcga efcga afgced gdecf +gfacbd fbcgde cefba efdcga bfgcead egcdf gfb gcfbe bg edgb | gb fdegc gfb fgb +ag agfdcb egfad fag adefb fdgec bdfgcae acfegd gebfdc aecg | fga ag egafd fcgebd +cadgbf cd gefbac cdfba fbead cedagb gdcf adc gacbf fgebcda | gcbafd bdcaf gfcd abdfe +fgebda fd afceb fcdeb fcad cgbed gabfcde dcabfe def befagc | eacfb efd efagcb def +beaf gfcaebd fdeag dae acdgeb gcdfa dgabef gbedf ea dcbgef | ae aed ae ade +gb dgeca gecab gcdfaeb ceafb bgc fagb adfceb baegcf gebfdc | fgba bg fecgab bg +daf gbfda afcedg geadfb fbcdg fgaebc ad dbagefc dbae aebgf | aebd eadcbgf dfa beda +dcbaef cabfd efgcba cbdgfa aedfg abecfdg ace cbde dfcae ce | cbefag ebcd cdabgf cbfda +bcgefa bgfcead cd fcbadg bdcga dac gbaed gafdce cfbd bcagf | cbfag acd cfbd bdfc +dgfcb aebgd gadefc bgfdec cbafgd cgbad egbdafc ac acbf cga | ca ac cabf abcf +cgaed gafbdec fgaedc ba baegcd edfbg agcb bcdeaf ebdag bea | gfceda ecabfgd defgacb aeb +cbfag cgdaf dcefab bac ba bdfceg cfgeb eagb cbfgea abcfdge | ba bac gabe cfbeda +efcgd ecbafdg fgabed edb ebcg adcfb be efcdgb dfcgae dbefc | dcgef ebd becg gdfaebc +fgedabc dafeb eg ged aegfbd afbecd fbgdc edfgb egaf dacegb | gaecdb cbegad fega fega +bgfcdae fbcda df eafd gbcaed bdeca gfbac gfdbce bfadce bdf | afcbdeg gabfcde deaf cbeda +fcgebda fcga bgfcd ebdfcg degba baf bafgd dfagbc bfcade af | afb agfc af cfegabd +cbfg bfd eabfdg facbdg edfcgab bf fcabd aedcf ebgdac badcg | eafdc bdf bf fbcg +fbdgce eagbfd dbacfeg dagb geabf cdeaf ebd bd fgbcae afebd | defac bed edb db +aegcd bad gdaebcf cabfg db ecbd gafdce gcabd gbcade faebdg | dab dba dba cgfba +ecdba bedacfg cdgeba dagcb bdge gdbfac fcadeg ced de acfeb | ed badfgc beacf bcgdafe +fg abdeg fgebdca agdceb gfbd gdfae fga cdefa efagbc febgad | fg bgaefc gf bgafcde +beadc gcbfed fdc bacf fc cbadefg feadc dgfea dcbefa dcgeba | cdf gefda dfc fbca +bd bgcedf decafg gafcdb acgdf agbce bafd gaefbcd cdb acbdg | fcdga afbd cbfdeg cafdgb +dabe bgcda egcdb fcdage dcebga bcfge dafgebc gdafcb ed ecd | ebad deba de gcbde +ga gadcb ebcfdg egbcd agebdc eagb afcedg dbfca dfceagb dga | dabgc ga agd adbcg +cbfagde ecdgf eabgfc fbd egbdf fageb edba dacbgf bdaegf bd | beda deab abgfe cegfd +gcdfa gfea ef bdacfeg aedbc efc gfebdc adgbcf fecad aefcdg | feadc fe efc fgcad +gdcae fga af acegfb fbda gfead edfgbc agdfecb dbgafe fdbge | fabd gfaed efgbd dagce +afdebg febc cdbae abe eb dbfcea dabcfeg aecgdf dabgc dafce | cefb cedgaf eab acefd +fgc dcabg gbdefac dfeg ecfdgb bfgcd gebcaf beafdc fg edbfc | cdfeb fcagbe fgbdace febdc +aegfbd gacdeb fdeacgb dea dgcefb faeg bdfac dgefb ae debaf | debfg dea ea ead +acgedb cfgae egfcbda fdeac eacbfd fd bdagfe dabec def fdcb | fed fd fcbd fde +dba bgcfde da cdaf acfbgde fbgdc fgadeb dcbag agbec acgfdb | gacbdef adfgbe bgcad fcdabge +acdfe cfgdab cdgea afgcebd dcgbae daf gfea fa egdfac bedfc | fa fad fa cedga +caedg bafgde egcba dabegc agd fecdbga bcfeag fecdg ad abdc | gad cbeag dag cabd +adfebg fedcagb fagdc gda eadc degcf gdafec ad cdbfge facbg | da aedc cbfgdea ad +ecfdba dg dgafec gcabdfe fbadg fadcb gbdfca gfd bgefa dgbc | cgbd dbcaf cgdb dbgcfa +ebacg eb begd dcebaf cdgea gafdce ecb cagfb bfadcge egcdba | bgdaecf bedacg dbeg cbdgae +ebdagcf cgbea fe agefbc abgdf agfeb egafdc bcef feg deabcg | cegabd ecgafbd ef fe +cd cgebdfa fgeabd cbd cabed gfbdec adcf abgce eafbd fcebad | efabcdg bcefgd baedc abfde +acfg gbacfd edgfabc bdcaf dca caebdg dafbe gbcdf ac dfbgec | bgcfed cda dbgfc acd +agdbefc abdc ecd gfcae aedbf gbcdef ebafdg ecadbf efadc cd | afdeb cde dbafce bfadge +begad de fged gfbea dbe gbdac ebfgdac efgabd cadfbe fegabc | de dgfe cgfaeb gadbc +gefdc gdfb gdbcaef deb ebfcd gcebad bd dacefg gdcbef fabce | gfedabc deb gcfade fdgb +bdec dagcf cefbg bfgace bgedfc edacfbg fgdec fde adgefb de | dbfaegc cedb edfabcg fcdeg +eaf gabed cabegdf fe ecbgaf fadeg gadfc fcdega cfde cbgafd | adgef fced cgdbafe fae +fcbaedg gadce abcg ceb bgedf adfbec decagf bc dbceg eabdcg | ceb bgafecd cabg acefbd +dagb cfgde acgfeb fbgac fcgdb bd dbf cbfagd fcbeda bcefgad | db fegdbca dbceafg aedbfc +edagb da dab fbdge cgdfbe acegb adfe abdgfce dfgeab bfgcad | abd dab gfbead eagbc +bdfega dcbgf efcgabd ce fec fcegd agce fegad daebfc efdcga | ec ecf dgacef bfecad +cdabgef bgdfe aecgb gcfa fc acgebf dcaebf dcbgae cfgeb efc | fc fcga bfecga faecbdg +dfeac gdfcea fcg acdebf cdge cgefa bdcgaf cg fegbdac bfage | cfg cfg gfeca fegac +bfad bcf bedcga cadeb bf bceafd bcegfd dbaegfc ecfga cfbae | efacdb afbd bcf fb +aegfcd bcdeg abcefg gcfea bcgafed bga afbe bagec ab fbdgac | gceba gacbe gbacef gab +dca ebda bdfaceg acgdb gbcdea begcd efbdcg efacgd bfagc ad | adcbeg ad cbfga cfbgeda +fadebc gcfbea becgf gf fgc abfg ecgbd dfecabg fcedag eafcb | ebfgc gaedfc bgcef gedabfc +fadg eafgb gbead bdaec ecagbf dg gdb agfebd aedcgfb cfgbde | bfecdag bgd badce gd +egcd efadb gacbfd bcaeg ecadgb adc bacegf adecb dc agedcfb | fcgabe degc acd cd +bedfcag gc fagdec gfabce bfgec acgb befac gfc bgdef aecfbd | cg ebfdg cfg gc +aegbdf gfabced fadebc gfde ed bcaeg fbgda eadbg fgbacd bde | dbcefag bed afcbged aegdb +agd fagec cfbgda bfceagd fgeacb cdae gdbef dagef da efcdga | edbgf gda gedaf cdgfaeb +fgaec eb fcgbd agfdeb cedb fabcdeg egb febcg dfbgec cdfgab | fgbcde dbeafg egcfdba gcbfd +gfe fdbae ge bfgdc dgfaec cgeb dcfgbe dabfgc fdegb eabgcdf | gebc gceb defbcag afbcedg +dfce cgbed fbcagd bcdgf ged bdfgae ed bdfceg agebc fabdegc | fcde gde gecdbf de +dba dcafbg gcdefb fbged dgeab bfegad gaecd ba aebf egafdcb | beadg cfdbage bgafde acdge +bcgdef cbdgeaf ae fbdace afbde gcdabe gdbfa edbcf fcea bea | dgafb adbfce ea fbdecga +afdg fgebc fdeacbg fd gadcb fdcgb gfacbd gbeacd acdfeb dfc | fd bdcafeg caefbd dafg +dfebag defa bdgfa beafg agbcfd eab cbagefd cfgbe ea acbgde | abdcge abe ae fecbg +ef bgfdeac bdcefg cfdba ecf dgecba gfae abgefc ecbga acefb | debcag afge efag fe +cg gbfc gabcd bgade dgc gbecafd egdfac dfbac abdcfe gabfdc | gcbad degfabc cgafbd adbgcf +edbcgf acgbf fbaedc cbfae gfc agcdb dagecfb fg fcgbea eagf | fg adcbef fbeac fadcgeb +deacg daeb dagbce ecdbgf edc ed bgaefc gecba dagcf abdgecf | cdaeg abcge dec ecd +fcgadb caged bedc cdabeg dfaecbg befag db dgb eagbd gacdef | fecagdb begad dgb db +fbcdga fgcad fecdg gcedab bfca adc ac bfdga dbfega eafbcdg | adc cbgade fgcadb ceabgd +cefdbg gde bgfeac ed begcd cbefg bfde aedcgf cbafegd gacbd | fegbdac gcbefd cbgef bgedc +bfdagc afdc bagcf gbfdc begcd begdaf beafgc dbefgac gfd fd | fcda df dfac dcbfg +gcbfe bfeacg cedbf ge bfcga gfe gfecda ecbgdfa bgfadc bage | feg eagb gef abfgc +bgfec bac abecdfg ab gdcea ebgcfa fagb aebcg caebfd gfcbed | ab ab cba acgbe +gdbcf cbedg ce ceg abcgde adbeg efgcab bdfegac adec adfbeg | gaecdfb bedga cge cead +eafcb cfdbe aeb acfeg ab dcgbfe adfb fgacedb ecabgd fdbcae | fbcde aedfcbg bea edcbf +ebdca egc cgabe fbge cgbfda ge bacfg geacbf afdgec gebacfd | badce cge bgfcea ge +gdfecb bdge gdf dgbcaf aefbgc bfecg fgdec dg ecdbfga deacf | dgf fedcagb gd gcedf +agdeb cfdbag gcabd ed dacegbf gebfa eagbdc acde efcgbd edb | ed eagdb de de +feag cfgbed feacbdg cfgade efcdg fcgdab afd dfeac af abedc | cbagfde dbagfc faeg dgabcf +cdg efgbcd decgfa dcegb dgbf gd ebdcfga adebc gbcfe cefagb | bfecg dgbf gdbf dg +gab dfceag gdcb bg gbead agdefbc gcabef acged efdba agdceb | gdcb bgdc edbfa bag +bgafde afdgc gcafed efgdc ceda gdcebfa gdbacf de gbcef edg | edg gde eadfcbg cade +gdb egcfadb gdef abcfd dg ebfag gadbef abdgf aefbgc cbgaed | fedgba dbegfac bfeagd gefcdba +gad bdcag becdg gceabd dceafbg fgdeca fcgab ad baed dfcbge | cfaegdb gda ad gaedcfb +dafbeg eadgbfc fgd bagcf gedb abdfce gafdb fcdgea gd efbda | gebd fdg gaefcd deagcf +cdbe adefb ecfgbad bfcgad bacdf agcefd efd cdeafb aegfb de | gacebdf bdce fbcagd dcefab +cb acdgbe bce cdegabf bgdefa aegdb cdbg acbde fcebga fdace | ebc abfdecg ceb gbacdfe +cg fcedg edfbag ceag fdbec gdc faedcg bdcefag gbafcd dfeag | geca dgfacb cgd cg +bcafde defac dcage dgfbce gafc cgaedf cgd cg fgcedab gdeab | cdg ebadg aedgcf fagc +bdec dagbf ecagfb decbfa aefdc aeb dcegfa adefcbg ebadf be | cdbe gfadb eadfc dcbe +bcgeda fc badfe gbfdaec fcge cfd bedfc cedbg adfgbc dcgebf | cf ebacgfd fgce fdbceag +gd fgbdea dbg badce gdcab fcagedb fbacg beacfg cgfd dcafbg | fcdg gdcbfa dbg gdfc +cag cdfa cgade edgcbf fcebga begfcad gfdcae egabd defgc ac | ca agc fgbace gac +ecabf geacfb eabdcf dec cd bgecfda gfdbce edcba cdaf adgeb | ced aedfgbc dc gbeda +fbdac ea cadefg fae beag facbe bfgeacd cfdegb bgfec gfecba | agbe ea bafce egbdcf +bdc dbega abcdg gbcfa dc gcde cgbaefd cdfbae eagdbf ebgadc | adefcb agcfb cdb gced +ceb ce debfca abgdfe bdaeg cabegd caeg dbgec dcbfg bdecgfa | ce abegd gdfcb fcbdgae +cafedgb dgf bcfd cgdfbe acedfg gbfed agedb aecgfb bfgec fd | fdgbec feacdg df bgcfe +ef abgfc cagfeb gdebfc fbae bcadfg defgabc feg gefac gceda | degac gfbac gabfc gfcea +bfdeca bd eabfgc degbcfa cgdb gefbc dbf ecfbgd gaedf edgfb | dbfge bdf egbfca db +fac cbdfg eacfbg gaecfdb bacfd bfeda acgd ac gbfecd cgfadb | dagc ac dcga bedfa +egfbca aegcf gdcfab fdc adce fcedg cd cfgead fdebg cedagbf | dcgfe fdgbcea aedc cfebga +da bfged afedcb gcebdf gefda fedbga edgbfca gdba eagfc eda | ead dcfebg defcgb efgbcd +adefgb ecgf gcedb fedacb bec fbecdg cdfaebg gedfb gcbad ce | dcbfeag cfbged efgbad bcdfage +dfec gcd agdbe bdafgc afcbge bgecfad bgcde bgfce bgedfc cd | fbecag beagdfc cgd cedf +edbc agcfbe adefg cd defca gfabdc cad dgabefc dfebac bceaf | dbce ebdc febcdga cdgbefa +ecdb eb acgebdf ebf dcfebg bgdefa fcgbd gcdbaf feacg cfebg | bef ecfbg egdcbfa cdgfb +ebfcgd aefcb bfadge efd ed adfcgb fbgdc bfedagc fcebd dcge | gced fbcgd edgc ed +beagf cefbag ebafc gfce gdfeab fcaedbg ec dfcba ecb gbadec | ce acfdb dbgcafe ec +abegfc fbcged bgfea fecabdg gef ge abdgf gaec afecb cfbdea | cbfaedg bface gfe efabgc +bdg bacd edagb fbegac fgaed bdgcae cgbea dfbegc ecgafdb bd | gdeaf cfdgbe gbcaed bd +fbce fdegca egafb aef egdcfba eabgc fe ecdabg agfbd ecgbaf | fadgb cbage bcgdea abfgec +dbafge fedgcab efgdbc bc fbac fbdea gceda bfceda bdcea ebc | eadcb fcdeab cafb bdecgf +cbgae fec aefgcb acfeg fe efgcbd bgceafd fbea cagbed dcfga | edbagfc acefg gbdface ecf +cbfdga bae ebdf fbadge afdgb gfeac acbdge bdacfeg eb agfeb | edbf bea efdcbag aeb +efdcgab bedgaf aecbgf cgfe gfaeb cbgea ecbfad ec gdcab ecb | cgfe eabfg eabgf ec +bdefa dfebgca bfe eadfcb dcbage bfgad debca cgebaf ef cdfe | gacdbe eagcfbd afcgebd dfgbace +gca ebdcfa fdcgea acedb bdcgf eabg gbacde bcgdeaf ga gacdb | ebag abge gac aecdb +abcgf afgcbe baeg gbc ecdbgf gafce facbd cfgade bg egabdfc | aegb cgb bcdgef abcgf +ecagbf bdfgca ecgfd gbe fecgb dafgecb bacfg bgadec efba eb | geb cadfebg beaf be +agcdb bgcaf bf fadebgc daecbf gbdf fbc ebgcda afegc bgcafd | facgdeb dbfg fb bf +fdbeag cgd bdefcag afegd eacgdf dc dgefc ebcagd gfebc facd | geadf dc dc cdg +adcgfe cgebf acdbf abcedf dgfbaec edba cabef ea afe dfagcb | bfgec bfeca ae deba +adegb bgcd cbdfgea dc cedba cagefd dcbgae gebdaf faebc ced | egadb ced dcbg dc +fdeg gd fdbaec bfacg dgcfa ecfdga fadcegb fdcea dceabg gda | efgd eacdfb bcfadeg dag +af ebgfda ecagdb febgc afe dabce cfda febcda baecf becafdg | fa dbfega fa bfeagd +debagfc cbdgfe dcb fdbeg cegb fbced fcead cbdfga bc fabdeg | dcb efadgb dgcfeab ebafdg +cgfdae bdef becfg gcbefa ed abcdg gedcb cgbdef bdcgefa ecd | cde dec bfed bfcgdea +dcfegab becdg gcaedb egd bcdaef gcfdb eg eafcdg cdeab ageb | ged cegafbd egd eg +ba eafcd fcbegda acfgbd bedcgf ebgcfa fabdc dcgfb bagd baf | ba cafed efdbcag efdac +aebcdgf cd efbgac bfcgd cbfga gbefd bfdcga bcad geafcd dgc | fabcged fgaceb cbda dc +cgbaedf fbceg eafbcd degcf gfdcae gdcfa dbagcf dgae edf ed | fcgeb efd ed gdea +ac agfdcbe gcea dgecf fgdca efgcad dfbeac fca fdgba gcebfd | agbdf ca ac gbdfa +gbedaf dbgfc cbg abdfgc geadbc fecbd ebcgafd cafg gc dafbg | cdbfg gcfbad gcbdea fadcegb +bagfec efg bfcdga egac abfecdg afdbge dbefc ge cgbfe acfbg | fbdeag eg eg cbdfe +edbgcf dgbac bdceag dbagf cgd ecagb bceagf cd adce cgbafed | aecd egdbca gacbe gcd +bgfdc gdfbe afdbgc gc fbdac bacg gbafdec cdg cbdefa defagc | egdfb gcabdef cdbfa dgacfb +adgcfb gcd dfecgb cgebfa bgcaf adgcf cdbafeg dg ecafd adbg | bcgaf fadcgeb gd cgbaedf +bafgd cfaebg cefa cfbgead bcf bgcea defgcb bgacf ebcgda cf | fcbgae adfbg cdfgeb adgbf +becfa bcgdf gbceadf gebcfa defa adbcge de dec cebdf bdefac | faed fdcagbe edc bfacge +ebfgd gabd gd gfbcaed abgfec faegb dge aefdbg agdfec cfebd | faecdg cgaedf baefgd dcfeb +ecabd ged aebgfc ecagd dg fdcegb afgce dgaf dcaegf cedbgaf | edcga gfda gd dge +dfg fg eafdb aegdc faged gfba debafg ebgfcad gfbdce acedbf | fedagb edbfac gf fgd +dbgca fedca bfgcad adgcf agdecb dgf cefdgba bgaedf fcgb gf | acefdgb beafdg gfd cfbg +edgacf adegcb fd dbacgfe fabd dfbce egcfb edfbac cbeda fde | dafb bafd acefbd fd +bcefa gbfd eadcgb bgfdae gedcfa abefd efd df gedba fbdgeac | bfdae fgeacdb bacfe gdceba +bdcefg aefgcd gadcb gfb decbfag dfecg bfdgc defb cefagb fb | defb fbcged dbfegac egfdc +fe cedgab cbfe dacbfge cedba fed gafcd dfaec edbfac efdgab | abgedf efcb bedac gefbad +afcgbe cf fbc cegadb bfcdea fcgabed aebdc adfgb cedf cfadb | dafbc bfeagc bcf deacbgf +ebcafdg ecfbg bae dgcabf bcaedg dfbeca ae ebcag gdacb dage | cadbeg gbacd bfdegca eba +cadbe efgbc feacbg dgfecb bgd dg bgfcad ebdgc dgef gbdefca | aefcgb gd bfagced dgb +edgcfa dgbecfa bgedac dfbaec acgdf dg abfgc egdf adcef gdc | cgd cbgfa eacgdb gcafd +cad cfbead abceg edfa fadbcg becad edgfcb bgfaedc cdbfe da | egcab afde dcabfe ecfabd +fgbdc be egb bcdefag ceba gedbac egcda dcfgae debcg gbdaef | ceba edgac eadcfg bcdaeg +cg adcfgbe edbcga gbead cbdfa cga bgedaf faecdg dbacg cebg | gcdabfe fdacge cga bcgad +gacf gf bgeafd gef gefbc efbagc bdceag fdebc acfbedg gbaec | bcgaedf egf gcefb cafdegb +fgbadce cdbag agcfd faec acfegd fa fag cfged fdabeg dbfcge | agf bagefd edgfc gdbacef +agcdb gcadfb dgfcb gfdbec adebg adc ac cfab beagdcf daecfg | ac ca bedga ca +dfa abdcfg agbf cfabd dacgb dcebf eadgcb fa gbdafce ecfgad | af fa bcdaf bgaf +ebdfc cgbaed eg edabfc gefb adfgc gdfec deg ebdfgc debgcaf | abfcde bfge gde dge +dabfegc dfegb cbgf cf fdebgc dcbaef gcfed adecg fbdgea fce | cf gbfc fgcb begcadf \ No newline at end of file diff --git a/eight/main.go b/eight/main.go new file mode 100644 index 0000000..e94a65b --- /dev/null +++ b/eight/main.go @@ -0,0 +1,26 @@ +package eight + +import "fmt" + +type Eight struct { + display display +} + +func Init(filepath string) *Eight { + eight := &Eight{ + display: display{}, + } + + eight.display.load(filepath) + return eight +} + +func (d *Eight) Answer() string { + count := d.display.uniqueOuputs() + return fmt.Sprintf("There were %d instances of digits 1, 4, 7, or 8", count) +} + +func (d *Eight) FollowUp() string { + outputSum := d.display.outputSum() + return fmt.Sprintf("The sum of the decoded output values was %d", outputSum) +} diff --git a/eight/test_input.txt b/eight/test_input.txt new file mode 100644 index 0000000..8614893 --- /dev/null +++ b/eight/test_input.txt @@ -0,0 +1,10 @@ +be cfbegad cbdgef fgaecd cgeb fdcge agebfd fecdb fabcd edb | fdgacbe cefdb cefbgd gcbe +edbfga begcd cbg gc gcadebf fbgde acbgfd abcde gfcbed gfec | fcgedb cgb dgebacf gc +fgaebd cg bdaec gdafb agbcfd gdcbef bgcad gfac gcb cdgabef | cg cg fdcagb cbg +fbegcd cbd adcefb dageb afcb bc aefdc ecdab fgdeca fcdbega | efabcd cedba gadfec cb +aecbfdg fbg gf bafeg dbefa fcge gcbea fcaegb dgceab fcbdga | gecf egdcabf bgf bfgea +fgeab ca afcebg bdacfeg cfaedg gcfdb baec bfadeg bafgc acf | gebdcfa ecba ca fadegcb +dbcfg fgd bdegcaf fgec aegbdf ecdfab fbedc dacgb gdcebf gf | cefg dcbef fcge gbcadfe +bdfegc cbegaf gecbf dfcage bdacg ed bedf ced adcbefg gebcd | ed bcgafe cdgba cbgef +egadfb cdbfeg cegd fecab cgb gbdefca cg fgcdab egfdb bfceg | gbdfcae bgc cg cgb +gcafb gcf dcaebfg ecagb gf abcdeg gaef cafbge fdbac fegbdc | fgae cfgab fg bagce \ No newline at end of file diff --git a/main.go b/main.go index 489a68a..b018f0a 100644 --- a/main.go +++ b/main.go @@ -5,6 +5,7 @@ import ( "os" "strings" + "unsupervised.ca/aoc2021/eight" "unsupervised.ca/aoc2021/five" "unsupervised.ca/aoc2021/four" "unsupervised.ca/aoc2021/one" @@ -43,6 +44,8 @@ func main() { day = six.Init("six/input.txt") case "seven": day = seven.Init("seven/input.txt") + case "eight": + day = eight.Init("eight/input.txt") default: fmt.Printf("%q does not have a solution.\n", flagParts[1]) help()