Problem Statement |
| Making a crop circle is a difficult job because it is hard to see what one is doing. You have found a farm with boulders scattered around, and have realised that it would be easiest to use a circle that passes through three or more of the boulders.
You have started wondering how many different circles you could produce in this way. Given int[] x and int[] y, return the number of distinct circles that can be made. The boulders are at (x[0], y[0]), (x[1], y[1]), etc. |
|
Definition |
| Class: | CropCircles | Method: | countCircles | Parameters: | int[], int[] | Returns: | int | Method signature: | int countCircles(int[] x, int[] y) | (be sure your method is public) |
|
|
|
|
Notes |
- | The field is large enough that a circle can be made through any three boulders that do not lie in a straight line. |
- | When four or more boulders lie on the same circle, this circle should still only be counted once. |
|
Constraints |
- | x and y will each contain between 1 and 50 elements, inclusive. |
- | x and y will contain the same number of elements. |
- | Each element of x and y will be between 0 and 500, inclusive. |
- | No two boulders will be in the same location. |
|
Examples |
0) | |
| {1, 2, 1, 2, 8}
| {2, 1, 8, 9, 9}
|
| Returns: 1 | The five points all lie on a common circle. |
|
|
1) | |
| | Returns: 0 | The three points lie on a single line, so there is no circle that passes through them. |
|
|
2) | |
| {0, 10, 10, 10, 20} | {10, 0, 10, 20, 10} |
| Returns: 5 | |
|
3) | |
| {0, 10, 11, 10, 21} | {10, 0, 11, 20, 10} |
| Returns: 10 | |
|