-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path06_letter_frequencies.go
66 lines (57 loc) · 1022 Bytes
/
06_letter_frequencies.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package main
import (
"fmt"
"metalim/advent/2016/lib/freq"
"metalim/advent/2016/lib/source"
. "github.com/logrusorgru/aurora"
)
var test1 = `eedadn
drvtee
eandsr
raavrd
atevrs
tsrnev
sdttsa
rasrtv
nssdts
ntnada
svetve
tesnvt
vntsnd
vrdear
dvrsen
enarar`
func main() {
var ins source.Inputs
ins.Test(1|2, test1, `easter`, `advent`)
ins.Advent(2016, 6)
for par := range ins.Iterate() {
fmt.Println(Brown("\n" + par.Name()).Bold())
sl := par.Lines().Data().([]string)
fmt.Println(len(sl), Black(sl[0]).Bold())
if par.Part(1) {
out := make([]byte, len(sl[0]))
for i := range sl[0] {
fs := freq.IMap{}
for _, l := range sl {
fs.Add(l[i])
}
s := fs.Sorted()
out[i] = s[0].V.(byte)
}
par.Submit(1, string(out))
}
if par.Part(2) {
out := make([]byte, len(sl[0]))
for i := range sl[0] {
fs := freq.IMap{}
for _, l := range sl {
fs.Add(l[i])
}
s := fs.Sorted()
out[i] = s[len(s)-1].V.(byte)
}
par.Submit(2, string(out))
}
}
}