## Four Points Determine A Square

### January 2, 2013

Today’s exercise is an interview question. It’s not hard, but it’s unusual enough that it took several minutes before I knew what to do.

Consider a list of four points on a plane; the points have integral coordinates, and their order is irrelevant. The four points determine a square if the distances between them are all equal, and the lengths of the two diagonals are also equal. For instance, the following lists are all squares:

```(0,0), (0,1), (1,1), (1,0) -- the unit square (0,0), (2,1), (3,-1), (1, -2) -- square not aligned to axis (0,0), (1,1), (0,1), (1,0) -- unit square, in different order```

And the following lists do not represent squares:

```(0,0), (0,2), (3,2), (3,0) -- rectangle (0,0), (3,4), (8,4), (5,0) -- rhombus (0,0), (0,0), (1,1), (0,0) -- degenerate (0,0), (0,0), (1,0), (0,1) -- degenerate```

The degenerate square that consists of four repetitions of a single point may be considered either square, or not.

Your task is to write a function that determines if four input points determine a square. When you are finished, you are welcome to read or run a suggested solution, or to post your own solution or discuss the exercise in the comments below.

Pages: 1 2