-
Notifications
You must be signed in to change notification settings - Fork 3
/
main.go
71 lines (60 loc) · 15.8 KB
/
main.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
67
68
69
70
71
package main
import (
"fmt"
"math"
)
func main() {
part1()
part2()
}
func part1() {
const width = 25
const height = 6
count := len(input) / width / height
min0 := math.MaxInt64
val := 0
for layer := 1; layer <= count; layer++ {
sub := input[(layer-1)*width*height : layer*width*height]
counts := map[byte]int{}
for _, c := range []byte(sub) {
counts[c] = counts[c] + 1
}
if counts['0'] < min0 {
min0 = counts['0']
val = counts['1'] * counts['2']
}
}
fmt.Println(val)
}
func part2() {
const width = 25
const height = 6
count := len(input) / width / height
vals := make([][]byte, 6)
for i := range vals {
vals[i] = make([]byte, 25)
for j := range vals[i] {
vals[i][j] = '2'
}
}
for layer := 1; layer <= count; layer++ {
sub := []byte(input[(layer-1)*width*height : layer*width*height])
for i := 0; i < 6; i++ {
for j := 0; j < 25; j++ {
off := i*25 + j
if vals[i][j] == '2' {
vals[i][j] = sub[off]
}
}
}
}
for _, row := range vals {
for i := range row {
if row[i] != '1' {
row[i] = ' '
}
}
fmt.Println(string(row))
}
}
const input = `221222001022120222222222212222220200222222222222122222222220222222212222222122022222202222222222212212222222222220222022222021022022222222202222222220222222102222020222222222212222220222222222222222122222222220222222222222222122222221222222222222202222222222222220222222222021022122222222212222222222221222200022022222222222222222221221222222222222122222222222222222222222222022122220202222222222202222222222222221222222222122022122222222102222222222222222112022220222222222202222221201222222222222222222222222222222202222222022022221212222222222222202222222222222222022222022222222222222012222222221222222122222121222022222212222220200222222222222022222222220222222222222222221122222212222222222222222222222222222222222222122222122222222002222222220220222021022122222022222202222220220222222222222022222222220222222202222022020022221222222222222212222222202222222222222222121222022222222122222222221222222020122021222222222212222222212222222222222222222222221222222222222122022122222212222222222212202222212222220222222222220122222222222022222222222222222012122021222122222202222222212222222222222022222222221222222222222022021022222202222222222212222222222222222222122222222122022222222012222222222221222001022122222222222212222221221222222222222222222222220222222202222022120022220212222222222202212222212222221222022222020122122222222012222222221221222211022022222222222212222222220222222222222022222222222222222222222122022122220222222222222212212222212222221222022222021122022222222212222222221222222010222122222022222212222220201222222222222121222222221222222202222122021022221202222222222212212222202221220222122222021122122222222212222022220221222110122220222222222222222221200222222222222022222222220222222222222022222122220202222222222202212222212222220222222222221022022222222022222122220220222002022121222022222202222221211222222222222021222222220222222222222222221122221222222222222202202222212222222222122222120222122222222002212222221222222002222121222122222202222221210222222222222220222222221222222202222022121122222222222222222202222222212221221222122222122222222222222202222122022221222101022021222022222202222220201222222222222021222222220222222222222222120122220202222222222222212222212221222222022222220122022222222202200222220222222200122020222022222202222200201022222222222020222222221222222212212022121222220212222222222212022222202222222222122222222022222222222112221022122222222200022121222222222212222211210122222222222021222222021222222212212222022022221222222222222212102222212220220222222222021222122222222002200022021221222011222121222222222212220211221022222222222120222222122222222212222022020122220212222222222202002222212220220222122222022121222222222112201222020221222010222022222222222212220220201222222222222122222222122222222222202222222022222222222222222212012222202220221222222222121121022222222202221222020220222112022022222222222202221212211222222222222122222222222222222202212022112222222222222222222202212222212222220222022222121020022222222002212022022221222202022021222222222202222212222122222222222221222222221222222212212022011222201222222202222202012122202220222222122222021020222222222222210122221222222200022222222122222222220211222122222222222122222222022222222202212122112122222202222200222222102022222120222222222222122121022222222002211022122220222201222121222222222222221221222222222222222222222222020222222212202122201122200222222201222222102222222021222222022222121221222222222012221122222221222021222221222222222012221210221222222222222020222222020222222222222222201022212212222212222212012122222222220222222222222022222222222012200122220222222011022121222022222222221221221222222220222122222222020222222212212122200222210212222200222202012022202220220222222222222222022222222012220122222221222010022022222222222222220222222222222222222021221222222222222212222022102022200222222201222212212022222021222222122222022022022222222002212022222220222220022020222222222002220221221222222220222121220222120222222222222222020222220202222210222202102222212122222222022222022122002222222212211122021221222222022022222122222012222222210022222221222021201222221222222212212022121222222222222200222212212222222221221222022222120220022202222102222222122221222102022222222022222202220212200122222220222020221222021222222222222122110122201222222222222222102222212022220222122222000121112212222202200222020221222001222221222222222222222210200122222222222122210222020222222202222012102222222212222222222222122022202221220222222222112120112222222212200122222221222211122121222122222112222202221122222220222220200222020222222202222122101222202222222202222202212022212021221222222222210022112222222202201022121220222021112121222222222102220210221022222222222021222222222222222202202002011122220222222211222220220022212120222222022222101121122202222012210122022220222022122020222022212112221201211122222220222121222222221222222212212012022222221212222221222211202022220222220222222222111122012202222102222222021222222201222022222122212022222200221122222221222122212222120222222222212102210122200202222221222211121022211121221222222222121122012222222112202122020221222201002222222122222212221221202022222220222122201222221222222212222122002222201202222210222202210222221020222222022222110020222222222102210022220221222220222020222222222112221210210022222222222121210222122222222202212012122222221202222200222210012022221121221222122222201020022202222002200222220222222212202120222122222122220201202022222221222121201222122221222202212022122122210212222221222212002120220122220222022222012122122222222022202122021221222020012220122122222102222212222022222220222221202222120220222222222022110222222212222210222210210021111221221222122222101120102222222102200020220222222201222022222122202202220200210122022220222222201222221222222212202112210122201202222221222200021222210220222222022220111222212222222102210120020220221022012221022022202022220210221122222222222121222222120222222222222202121122212212222221222210202022112121221222222220021022022102222212201222020221221002102222122122222222222210202022122220222122212222121220222222202222002122210212222202222210200121012021222222122222101220122012222102202022220222220000022122222022212002222212210022222221222221211222022222222202202102122022202202222201222221022122111020221222122221220222112022222102211121121221222200222121022022202102220201221122222220222120220222221222222202222122121022210212222201222211021120110220221222122220002022122202222102200121020221221002022120222122222212220212211022222222222220202222222221222212222012202022220222022201202212100122120222221222122220121122102122222012220120121221222021002022222022212212220220202222022220222121212222220221222222212122212222220212022210212221220121220222222222222220102122202022222112221121121220220002002121222122202022220221211222022220222021211222222221222222212022122222221222122200202210200120210120220222022222200221002022222212211220020222221021112022022222222012220221212122222220222121221222122222222222202112211122222222122201212221001022102020220222122221111120112202222222200111022222222022112121022022212112220200200022022222222122221222021222222202222100210122221202222220212202102221001021222222122221202120211112222222202002022222222021022112022022202202222210220122222221222221221222121222222210222001020022201202122200222202010220210120221222222221101222010222222212221221120221222001112201122022212002221221200122222220222022221022220222202202212112121122220212022200212202121022110120220222122220201021012212222202210210222220222211102012222222212102222221200122022222222221200222020222202211202200002022220212222202212200100120122022222222122222011121002122222022220211022220220011212212222122212102221200222022012222222122201222121221212211202110022222221222122200202221022221000122221222122220211221101002222202202010121220221011112121022022222012220202202122012222222120222022121220222202202120200222220222122200222221100222001020221222022222120022210012222122200121122222222220022012122022202222221220211002102220222222210222121222212200212101122022200222122201202211200120201021220222022222102021112112222222201002221222220010212212222022212102220221210222122220222022200122022222212220222111210122200202122201202200011122122022221222222221020220122022222122220112022222221201222101222122212212221220220122022220222121220222120222212200212101000022200202222221212202200020110222220222122220221221010212222222211111022221221111102211222122222212221211200012012222222122221222220221212200212110020222201212220212222212210022012121220222122221020020020022222202212102222220220010112221222222212022220200202002112222222222202222220222222201212001121122220212121222212202001021010020222222022221202122202122222212210001120220220002012021122222202212220220200102222222122020210022220221222221212122002022210212022201212222012222021221221222022221221222200122222012201121222222220110002220122222202202220202201102222222122121201022122221202221202020121022221022021220222211021022020121222222222222120222000202222012220020020222221210202110022022222222222201212002222222122022200122220221202210212200021222210102122212202201201120111101221222022221000221102212222022212222221221222210222011222122212202221212212222122222022221211222022220212211202022101022202122020200202202212021122012220222122222202222111102222102212020122221222100122201222122222022222221210112012220022121211222121222212220222002221022212002120202222220202122201200222222022222010222211212222012221012120220221101202211022122212112220222220112112221022222202020222220202211200011011022210022122202222220212221220021222222122220110120001222222102201221121222222021102010222102222102222202201222002220222220220120022222222101212002201222211212121222202201112222022211220222222220001220220002222122222012022221221120102220222102222112222201211022212221122020200020221220202202222220220222211122221200202222110020101111220222022222002221202202222112200012120222221001222111022112212112222201212111012222122120211221222221212121222022220022220222020221222222210222000000221222122220012020001212222022210222021222220121212011122202212002220222211012012222222020221021022220222220212202221022220002121200212222002121212022222222022221101221120102122112212120021221221102202102122122222112220200211020122220222021211020222022222212200011011122212122020211222202020022121101222222022200001120120212022022210011022221221121022000222122222012222210220100022220022222202011121000222112201211110122201212122201212210020220121001222222222220012221122222122022210222221220222112222222022212202202221211220020212221122020201001220022212020211220022122201122020200202220011220021120222222022210200121012002022112221122020222220211122011222202212212220110211221012220022022211221122110222012221222220022210102221212222220000221221021222222122222202120210102112212220110221221220201202002122102202122221111200200202221222120202202022220212211200102200022212222020202222202002120121110221222022211112121010112102002200002021221222202012001122122202102222212222210022212022021202022122111202222212101022222202212222220122221012022211112220222022220000121022002122012212120221221222222102000022022202222221202221222212201122020210000220111222211212022211222210012121222002202111021112022220222022222111220000222212211221221021222221120012022122112222002221021202212002210022220210010120020222212202202112122201122020202021211102221012112222222222201001122110102112012221212121220220112202201022202222212222101220001202210222120201112021011202110202000012022212012220212011202112120011202222222122210011222120012102102212002020220222201102111122012212002212121220111222201022121221010020110222101220101001122201222020200102200000122200011222222022200211022002022012021202212120222222001112212222202212212210012200222222222122220200020121000202000210011201122202202120200211210020121120010222222022210021101111222212020200121122220021201122210012102202122220000212200002202222120212120121121202112200020000222211002221222101221110120201102222222022210022222011112102110220211120221121201122011222102222222200021222222112201222022220200222110222001202001222022022012222220211210101122021110221222022210200021002012212102210020122222020222002220022002222102202120222220122201122022201212021202212110222121122122110102020210211202012220010101222222122222021101122112112220200210122222120221102202122222222102221120221211202222122022000122220200202020210201221122220012001212121200120022010101222222122220021102220202002122211211220222021101122110022112222222202001212002112201222221112201120120212011210210012022202222100222120211000022220111221022222220212120202122002102202120221222120011202211202002222112222212210202012220222122010012222000202011212021102122211122210200120220211222202110220122122222120212020202102220201122021220222202102122022212212012200002220111122201022220021200020211212202200100200222202122202201122211002220120021221222022221012102220102212021201121220220122001002120212112212012222001222010012210022022210100222220202111210212010222112112110110200222120121000112221022122202022101220222112020200222100220221211122122001012212222211110212112102210122121002100121112222022200002211222111012010110012201001121021200222022022201112211111212022010212012122220021221122121120112222122211012210110102221122121201112222102202202201101021122101012222022020200102120011110221122122220201202021122122120210122201222221002202120220022222102201210200000112220122221002202021001222102220202221002100201110102212210100122202221221122222212101011212002202001211220121220020022102021211022202202211201202220222222222122001021222011222122211021102102002010101121020221212221211101020122122200222220012222112102202020010220021101102220001222212202200100200002102212122122010211122200202111200020120102212112012120001201200020012012220022222212200020111102022002210120101220220221212011011112222212202110222212212222122121012112222020222222210222021201020212101222022211102020100120220122222212000001101202122101201102122220202010012111210102212112221010222211102202022022021202222101212000202110220121010010202102200201120222222020120022122201012212121122022002210120211222200112002001020222202100201110102200212201222222212112220011202020211121200022012222212200200222010022101000022122122221120212222002012002211112011222001022102220101002212022201102110111122211022222020011120022212110200000000221101021101001101212122220211211020022122211002000122022022002221002112221222110122122202002202122220122212121022211222021100202020022202120201022222122000011112001022201102122210022121122122220110100210022222111200202101220112122022022220012202022001121201222102210022021122112121101202001222211020201201200002101000222220021100121120222122210212222200012002221212020211220211220002122122112222222222012022002202211222120000011022110212102200202001212021102201221111210110020010100222022122210222101121122122122212112001111221120201000002201120222022201211022010022200102200021212112011212002220201001111220212121200111110202222211000010110100100100000020021122111101202`