Skip to content

Commit e122435

Browse files
author
Bálint Kemény
committed
Add Day7-8
1 parent 5bc92ee commit e122435

File tree

6 files changed

+2082
-0
lines changed

6 files changed

+2082
-0
lines changed

Day7/input.txt

Lines changed: 594 additions & 0 deletions
Large diffs are not rendered by default.

Day7/main.go

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package main
2+
3+
import (
4+
"bytes"
5+
"fmt"
6+
"io/ioutil"
7+
"log"
8+
"os"
9+
)
10+
11+
func main() {
12+
file, err := os.Open("input.txt")
13+
if err != nil {
14+
log.Fatal(err)
15+
}
16+
defer file.Close()
17+
rawData, err := ioutil.ReadAll(file)
18+
19+
var bags map[string][]string
20+
bags = make(map[string][]string)
21+
for _, line := range bytes.Split(rawData, []byte{'\n'}) {
22+
var bagName string
23+
var bagContents []string
24+
var words []string
25+
for _, word := range bytes.Split(line, []byte{' '}) {
26+
words = append(words, string(word))
27+
}
28+
29+
for i, v := range words {
30+
if i < 2 {
31+
bagName += v
32+
if i == 0 {
33+
bagName += " "
34+
}
35+
}
36+
if v == "no" {
37+
break
38+
}
39+
if i > 4 && i%4 == 1 {
40+
var bagColor string = v + " " + words[i+1]
41+
bagContents = append(bagContents, bagColor)
42+
}
43+
}
44+
45+
bags[bagName] = bagContents
46+
}
47+
48+
var ansMap map[string]bool
49+
ansMap = make(map[string]bool)
50+
contains("shiny gold", bags, &ansMap)
51+
52+
var ans int
53+
for range ansMap {
54+
ans++
55+
}
56+
fmt.Println(ans)
57+
}
58+
59+
func contains(col string, bags map[string][]string, ansMap *map[string]bool) {
60+
for bag, colors := range bags {
61+
for _, c := range colors {
62+
if c == col {
63+
(*ansMap)[bag] = true
64+
contains(bag, bags, ansMap)
65+
}
66+
}
67+
}
68+
}

0 commit comments

Comments
 (0)