Defibrillators puzzle discussion

Salut, dis moi comment tu as réglé ce problème avec getline ? Merci

@JoYun: Oui, j’ai réglé ça un peu à l’arrache, mais ça a le mérite de marcher X) En gros comme je l’ai dis plus haut le problème c’est qu’un appel de getline(cin, line) après des cin >> val génère une ligne vide… Donc j’ai juste ajouté un getline(cin, line) inutile après le dernier cin >> val, puis j’ai commencé ma boucle de getline(cin, line) pour récupérer la totalité des lignes suivantes ^^
Sinon la méthode “propre” que j’ai découverte dans les puzzles suivants (qui ajoutent par défaut la boucle de lecture dans l’éditeur), consiste à ajouter un cin.ignore(); après chaque cin >> val.

Hello everyone!

I have a problem passing the “Exact position” test while other tests is OK.

The test expects the answer to be “Cimetiere Saint-Etienne”, but there is no such name in defibs list given.

Also there is some strange data in defibs list:

-> ‘21;Gymnase Francois Spinosi;Rue de la Cavalade 34000 Montpellier;04 67 15 90 35;3,91771560379933;43,5989740159529’
-> …
->3,6029957496972’
->‘154;Centre Mutualiste Neurologique PROPARA;263 Rue du Caducee 34000 MONTPELLIER;;3,83221040954412;43,6433843496942’

Maybe there is some error in the test code or am I missing something?

Unfortunaly, there is a limit of size on the amount of what we can log in the error output. If we log too much, the ouput is truncated. But it is not truncated at the end, the truncation is in the middle. So you see “…” because you reach the limit. Not because there is ... in the data.

Hello, I need some help. I am using C and I would like to use the constant M_PI which should be defined in math.h but I get an error ,“undefined firts use”. Could you help me to solve this problem.

Salut j’utilise le langage C et je veux utiliser la constante M_PI qui est censée être définie dans la bibliothèque math.h, sauf que quand je lance le code j’obtiens l’erreur : “undefined first use”

Tu peux utiliser 3.141592654, ça marchera aussi bien.

M_PI is nonstandard, you need to explicitely enable it. See https://www.gnu.org/software/libc/manual/html_node/Mathematical-Constants.html.
Alternatively, you can use 4*atan(1).

i am getting different results with the same inputs in VS2015 and the games IDE. using C#.

double.Parse does not need me to replace ‘,’ with ‘.’. maybe the games IDE handles this differently?

numbers for my formula (sqrt((x1 - x2) ^ 2 + (y1 - y2) ^ 2)) are somewhere between 0 and 1 in Visual Studio but in the billions in the games output.

any ideas?

VS2015:

0,00104921491623115 Maison de la Prevention Sante
0,0194830111070095 Hotel de Ville
0,0319060445097731 Zoo de Lunaret

CodingGame:

583665215257624 Maison de la Prevention Sante
584733915338924 Hotel de Ville
583533035382947 Zoo de Lunaret

edit:

my suspicions have been conformed:
tests show that Visual Studio 2015 really does double.parse ‘,’ just like a normal comma separator. The CodinGame tools need ‘,’ replaced with ‘.’ before parsing to double…

1 Like

I have this exact same problem. I passed all four tests, but gave me only 50% on submitting telling that I hard coded. I didn’t hard code anything. Someone please help me

I was surprised when I couldn’t pass the test 3 in IDE, but passed 100% of tests after submitting my code…

Note that the formula is wrong ; to get the real distance, you have to multiply by ( π / 180. )

Still proportional though, so the results are not changed :wink:

[Edit] Oops degrees -> radians should be done out of the cos as well ^^

Thank you very much for the info! Previous score was : 50% and I was trying to optimise my code in all ways possible, but this formula helped me a lot (100%)!

OK, i have to tell you how i lost one hour on this game.

First, the formula for the distance seemed weird; as a math teacher, as soon as the first test didn’t pass, i used mine (which is the one given here)
Still don’t pass the first test.

I pass my float into double; that didn’t seem to change anything on the results. Still don’t pass (i’ve got an answer, but it’s not the good one).

And then, at least, after an hour of research and optimization, i realize that longitude and latitude wasn’t in the same order for the person and the defib’…

don’t laugh.

I took the first number and called it “lat” instead of “lon”, but since i was reading it in the good order i didn’t see it. And the formula give a wrong result.

That’s so stupid. sososo stupid. dumb error ever.

The good point is, that fixed, all the others tests pass without a prob’ and i got a 100%


Bon, il faut que je vous dise comment j’ai perdu une heure sur ce jeu.

D’abord, la formule pour les distances me semblait bizarre. Comme je suis prof de maths, dès que le test a planté je l’ai remplacée par la mienne (qui est celle donnée plus haut ici). Mais le test ne passait toujours pas.

Ensuite, j’ai passé mes float en double. ça n’a pas eu l’air de changer les résultats (ni la précision d’ailleurs). Toujours bloquée (j’ai une réponse qui s’affiche correctement, mais pas la bonne)

Enfin, après une heure de recherche et d’optimisation, je me rends compte que la latitude et la longitude de la personne et des défibrillateurs ne s’affichent pas dans le même ordre…

Ne riez pas.

J’avais pris les nombres dans l’ordre, appelé le premier “lat” et le second “long”, mais comme lors du debugage je les lisais dans le bon ordre je ne m’en suis pas rendue compte. Et donc, forcément, au moment du calcul, le résultat était faux.

C’est la plus stupide erreur du monde -_- le pire étant que, si j’avais fait la même erreur pour l’utilisateur, le programme aurait sans doute bien fonctionné XD

Le point positif, c’est qu’une fois cette stupide erreur corrigée, tous les tests sont passés sans problème et j’ai eu 100% de validation.

1 Like

In a similar bout of “oops”

I had a * sign in my distance equation :frowning:

D = Math.Sqrt(Math.Pow(X,2) * Math.Pow(Y,2));

instead of

D = Math.Sqrt(Math.Pow(X,2) + Math.Pow(Y,2));

La formule donnée peut sembler bizarre, mais elle est proportionnellement juste ; elle donne simplement des distances (en km) 180/π fois trop grandes ^^

oh, je sais. Elle est même parfaitement juste: elle prend simplement en compte la courbure de la terre. Sauf que, franchement, sur des distances comme ça, c’est un peu aberrant de prendre ça en compte ^^

Oui et non ; c’est un exemple théorique, donc les points de tests donnés pourraient être de l’autre côté de la planète (même si en pratique, c’est aberrant de chercher le défibrillateur de Montpellier le plus proche en étant en Nouvelle-Calédonie ^^).

You must replace the “,” on the give positions with “.”, otherwise your conversion will give wrong values.

Thx 2 you for the formula works great :wink:

Regards

The formula is not wrong. There’s a note in the problem description:

Note: In this formula, the latitudes and longitudes are expressed in radians.