|
|
@@ -0,0 +1,23 @@
|
|
|
+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
|
|
|
+}
|