593.valid-square.go 431 B

1234567891011121314151617181920212223
  1. func validSquare(p1 []int, p2 []int, p3 []int, p4 []int) bool {
  2. seg := make(map[int]int)
  3. seg[dist2(p1, p2)]++
  4. seg[dist2(p1, p3)]++
  5. seg[dist2(p1, p4)]++
  6. seg[dist2(p2, p3)]++
  7. seg[dist2(p2, p4)]++
  8. seg[dist2(p3, p4)]++
  9. if len(seg) != 2 {
  10. return false
  11. }
  12. for _, v := range seg {
  13. if v&1 == 1 {
  14. return false
  15. }
  16. }
  17. return true
  18. }
  19. func dist2(p1, p2 []int) int {
  20. dx, dy := p1[0]-p2[0], p1[1]-p2[1]
  21. return dx*dx + dy*dy
  22. }