69 lines
869 B
Go
69 lines
869 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"bufio"
|
||
|
"fmt"
|
||
|
"os"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
GROUP = iota
|
||
|
GARB
|
||
|
IGN
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
state int
|
||
|
group int
|
||
|
score int
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
state = GROUP
|
||
|
sc := bufio.NewScanner(os.Stdin)
|
||
|
sc.Split(bufio.ScanRunes)
|
||
|
for sc.Scan() {
|
||
|
parse(sc.Text())
|
||
|
}
|
||
|
fmt.Println("SCORE:", score)
|
||
|
}
|
||
|
|
||
|
func parse(c string) {
|
||
|
fmt.Println(c)
|
||
|
if state == IGN {
|
||
|
state = GARB
|
||
|
} else {
|
||
|
switch c {
|
||
|
case ",":
|
||
|
if state == GROUP {
|
||
|
fmt.Println("sep group")
|
||
|
//score += group
|
||
|
}
|
||
|
case "{":
|
||
|
if state == GROUP {
|
||
|
fmt.Println("start group")
|
||
|
group++
|
||
|
}
|
||
|
case "}":
|
||
|
if state == GROUP {
|
||
|
fmt.Println("end group")
|
||
|
score += group
|
||
|
group--
|
||
|
}
|
||
|
case "<":
|
||
|
if state == GROUP {
|
||
|
state = GARB
|
||
|
}
|
||
|
case ">":
|
||
|
if state == GARB {
|
||
|
state = GROUP
|
||
|
}
|
||
|
case "!":
|
||
|
if state == GARB {
|
||
|
state = IGN
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
fmt.Println(state, group, score)
|
||
|
}
|