adventofcode2017/9/9.go
2017-12-09 23:42:09 +00:00

66 lines
934 B
Go

package main
import (
"bufio"
"fmt"
"os"
"strings"
)
// cat input | go run 9.go
func main() {
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
s := strings.Split(scanner.Text(), "")
var keep []string
// Remove garbage
garbage := false
garbagecount := 0
for i := 0; i < len(s); i++ {
switch s[i] {
case "!":
i++
continue
case "<":
if garbage == true {
fmt.Println("garbage:", s[i])
garbagecount++
}
garbage = true
continue
case ">":
garbage = false
continue
default:
if !garbage {
keep = append(keep, s[i])
} else {
fmt.Println("garbage:", s[i])
garbagecount++
}
}
}
fmt.Println(keep)
// Calculate depth
depth := 0
total := 0
for i := 0; i < len(keep); i++ {
switch keep[i] {
case "{":
depth++
total += depth
case "}":
depth--
}
}
fmt.Println(total, garbagecount)
}
}