66 lines
934 B
Go
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)
|
|
}
|
|
|
|
|
|
}
|