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) } }