function validSquare(p1, p2, p3, p4): points = [p1, p2, p3, p4] distances = []
# Compute all pairwise distances
for i from 0 to 3:
for j from i+1 to 3:
d = distance(points[i], points[j])
if d == 0:
return false # Duplicate points
distances.append(d)
# Sort to group equal distances
sort(distances)
# Check pattern: 4 equal sides, 2 equal diagonals
if distances[0] == distances[1] == distances[2] == distances[3] and
distances[4] == distances[5] and
distances[3] < distances[4]:
return true
return false
function distance(p1, p2): return sqrt((p2[0]-p1[0])^2 + (p2[1]-p1[1])^2)