func validSquare(p1 []int, p2 []int, p3 []int, p4 []int) bool { seg := make(map[int]int) seg[dist2(p1, p2)]++ seg[dist2(p1, p3)]++ seg[dist2(p1, p4)]++ seg[dist2(p2, p3)]++ seg[dist2(p2, p4)]++ seg[dist2(p3, p4)]++ if len(seg) != 2 { return false } for _, v := range seg { if v&1 == 1 { return false } } return true } func dist2(p1, p2 []int) int { dx, dy := p1[0]-p2[0], p1[1]-p2[1] return dx*dx + dy*dy }