Let's draw out our square.
One way to do this is to calculate the number of unique distances. Let's visualise this.
The distance here is 1.
And here.
This means for all 4 points, we have 1 unique distance (1 to each point) in this square.
We now have 2.
Using Pythagoras' Therom we can calculate the distance.
class Solution(object):
def validSquare(self, p1, p2, p3, p4):
points = [p1, p2, p3, p4]
dists = collections.Counter()
for i in range(len(points)):
for j in range(i+1, len(points)):
dists[self.getDistance(points[i], points[j])] += 1
return len(dists.values())==2 and 4 in dists.values() and 2 in dists.values()
def getDistance(self, p1, p2):
return (p1[0] - p2[0])**2 + (p1[1] - p2[1])**2