I pass all tests but not the third validator “Chaotic Ties”.
This is my algo in java :
(because of Polygon object in java doesn’t include boundaries, we have to make it manually)
i compute radius with width/2, ofc.
if at least one coordinates are not in [-radius;radius], it’s 0 point.
i check if x and y are positivie, so i can check if we are in the diamond square.
For example, you have a straight between coordinates [-radius;0] to [0;-radius]. you can parametrize your straight with y + x = -radius. So i check if y+x >= radius.
I do it for the 4 combinaisons of -radius <= x || y <= radius.
If one test is ok, it’s +15 points.
If not, i check if it’s in the circle with the classic sqrt(x²+y²) <= radius
After i sort by values, with a stream.
Anyone had this problem ? Or maybe anyone has a test data that can represent this validator ?
At least it help for the tip to test x²+y² <= radius² instead of using Math.sqrt.
However, i will try to make the 3 static methods but i’m not really sure it would help. Because it would be a c/c of code with just a return.
But, never said never, i’ll try and reply later. thx
It doesn’t change anything.
It’s really frustrating to not have all errors cases taken into account in units tests because we can’t even debug what’s wrong with our tests in “submission mode”.
If later someone find this topic and found a solution, i would be glad to know it, even if it’s several years later
@Pox First of all, all the computations can be done using integers, avoid sqrt and divisions and make sure to reduce everything to exact integer comparisons (to avoid floating point inaccuracies). You should also make sure that you output the names in the required order.
If this does not solve the problem, you can send me your code in PM, I’ll have a look at it.
So here the news.
Thanks to the comrade @Niako, i founded the tip.
Here was the problem and the solution (in java)
I used a Map<String,Integer> to represent Names and the score.
The compute score algo was correct. The incorrect thing was with the sort.
I had an assumption that when i try a
“sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))”, it sort by reverse score (it’s asked) but the names order displayed still remain when there’s a tie.
It’s a complete mistake, maps doesn’t preserve order of adding of keys when there’s a tie during the comparingByValue.
So i tried to manage “people” as an object with name/score and then use Comparator and thenComparing method to add another criteria when there’s a tie.
A good debug story to share. Also let you know that in java you can use TreeMap which supports sorting. To have custom sorting, e.g on value, add a Comparator to define how you want to sort.
I’m not sure if there’s a bug in the first test case or not. According to the instructions, “Darts landing on the edge of a shape are considered within the shape”: thus, if a square has side length X, a dart landing at (X, X) should be within the square. I’m puzzled, then, why on the first test case Will doesn’t get 5 points for hitting the corner of the target.