Day 8 solution
This commit is contained in:
11
README.md
11
README.md
@@ -19,6 +19,8 @@ After generating a new package update [`main.go`](main.go) to include a `<day>`
|
|||||||
|
|
||||||
## My Solutions
|
## 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
|
### Day 1
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@@ -82,3 +84,12 @@ The solution for "seven" is:
|
|||||||
Used 357353 fuel to align
|
Used 357353 fuel to align
|
||||||
Used 104822130 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
|
||||||
|
```
|
||||||
|
195
eight/display.go
Normal file
195
eight/display.go
Normal file
@@ -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
|
||||||
|
}
|
58
eight/display_test.go
Normal file
58
eight/display_test.go
Normal file
@@ -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()
|
||||||
|
}
|
||||||
|
}
|
200
eight/input.txt
Normal file
200
eight/input.txt
Normal file
@@ -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
|
26
eight/main.go
Normal file
26
eight/main.go
Normal file
@@ -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)
|
||||||
|
}
|
10
eight/test_input.txt
Normal file
10
eight/test_input.txt
Normal file
@@ -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
|
3
main.go
3
main.go
@@ -5,6 +5,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"unsupervised.ca/aoc2021/eight"
|
||||||
"unsupervised.ca/aoc2021/five"
|
"unsupervised.ca/aoc2021/five"
|
||||||
"unsupervised.ca/aoc2021/four"
|
"unsupervised.ca/aoc2021/four"
|
||||||
"unsupervised.ca/aoc2021/one"
|
"unsupervised.ca/aoc2021/one"
|
||||||
@@ -43,6 +44,8 @@ func main() {
|
|||||||
day = six.Init("six/input.txt")
|
day = six.Init("six/input.txt")
|
||||||
case "seven":
|
case "seven":
|
||||||
day = seven.Init("seven/input.txt")
|
day = seven.Init("seven/input.txt")
|
||||||
|
case "eight":
|
||||||
|
day = eight.Init("eight/input.txt")
|
||||||
default:
|
default:
|
||||||
fmt.Printf("%q does not have a solution.\n", flagParts[1])
|
fmt.Printf("%q does not have a solution.\n", flagParts[1])
|
||||||
help()
|
help()
|
||||||
|
Reference in New Issue
Block a user