Un programme qui apprend de ses erreurs

Déterminez le type de Pokémons selon leur position.

Ce défi est tiré de c0d1ngUP 2017

Votre équipe vient de mettre à jour une zone géographique très étendue dans laquelle sont répartis un grand nombre de Pokémons.

Les Pokémons en question sont particulièrement grégaires et se regroupent systématiquement par paquets de même type. Vue de dessus, la zone géographique en question pourrait ressembler à quelque chose comme ceci, chaque couleur représentant un type particulier (notez qu'en haut à gauche et en haut à droite, les Pokémons sont de même type mais forment deux groupes séparés).

Les Pokémons sont repérés par leurs coordonnées (un couple x, y). Étant donné un couple de coordonnées, vous allez devoir établir quel est le type du Pokémon.

Vous ne disposez toutefois d'aucune information sur leur répartition. Vous savez simplement qu'ils ont tendance à se regrouper par type.

Pour réussir ce défi, vous allez dialoguer avec un serveur :

  1. Le serveur vous enverra un couple de coordonnées.
  2. Puis, vous proposerez au serveur un type pour le Pokémon se trouvant à cet endroit.
  3. Enfin, le serveur vous répondra en indiquant quel était finalement le type du Pokémon.

Ces trois étapes peuvent être répétées des milliers de fois si vous le souhaitez. Le défi sera validé si vous donnez le type correct pour 25 Pokémons successifs, c'est à dire si vous arrivez à faire une série de 25 réponses justes.

Communication avec le serveur

En entrée du problème, deux URLs vous sont communiquées. Elles ressemblent à ceci :

  • http://.../MachineLearning/C0MfHAoFXBILF1INEgYfCVxEvbUw=/getpoint
  • http://.../MachineLearning/C0MfHAoFXBILF1INEgYfCVxEvbUw=/reponse

Si vous consultez la première URL, un couple de coordonnées vous est renvoyé, au format json. Par exemple :

[24.625, 74.875]

Vous avez alors 60 secondes pour consulter l'autre URL, en ajoutant au bout votre proposition pour le type du Pokémon. Les types étant simplement numérotés, vous avez juste à envoyer un nombre strictement positif (1 par exemple). Si vous pensez que le Pokémon aux coordonnées [24.625, 74.875] est de type 1, il suffit donc de consulter l'URL :

http://.../MachineLearning/C0MfHAoFXBILF1INEgYfCVxEvbUw=/reponse/1

En réponse à cette requête, le serveur, vous renverra, toujours au format json, la réponse correcte (qui est peut être celle que vous avez donnée, ou peut-être pas). Par exemple :

3

Voici ce que pourrait être un échange avec le serveur :

http://.../getpoint
 => [20, 22.5]
http://.../reponse/2
 => 1
http://.../getpoint
 => [20, -10.5]
http://.../reponse/2
 => 2
...

Attention à ne pas aller trop vite. Au moins 1 seconde doit s'écouler entre deux requêtes getpoint. Si vous ne respectez pas ce délai, cela comptera pour une faute, et remettra le compteur des succès consécutifs à zéro !

Si vous donnez la bonne réponse 25 fois consécutives, c'est gagné ! À ce moment, le serveur, plutôt qu'envoyer la catégorie du Pokémon, vous enverra un nombre strictement négatif. Par exemple :

-9234

Si vous entrez ce nombre comme réponse dans la page, vous validez le défi.

Type de retour
un nombre entier
Entrées du problème
Vous devez être connecté.e pour proposer une réponse au défi
Vous devez être connecté.e pour accéder aux forums.