package main import ( "fmt" "bufio" "os" "log" ) type Point struct { x,y int } type Triangle struct { a,b,c Point } func readTriangle( str string ) (ret Triangle) { fmt.Sscanf(str, "%d,%d,%d,%d,%d,%d", &ret.a.x, &ret.a.y, &ret.b.x, &ret.b.y, &ret.c.x, &ret.c.y) return ret } func det( a, b Point) int { return a.x*b.y - a.y*b.x; } func signe( c, a Point) bool { return det(Point{ c.x - a.x, c.y - a.y}, Point{ -a.x, -a.y }) < 0 } func main() { file, err := os.Open("p102_triangles.txt") cmp := 0 if err != nil { log.Fatal(err) } defer file.Close() scan := bufio.NewScanner(file) scan.Split(bufio.ScanLines) for scan.Scan() { trian := readTriangle(scan.Text()) sign := signe( trian.c, trian.a ) if signe( trian.a, trian.b) == sign && signe( trian.b, trian.c ) == sign { cmp++ } } fmt.Print(cmp); }