La Chambre aux statues

featuring Indiana Jones

Ce défi est tiré de c0d1ngUP 2023

Le Docteur a réuni quatre de ses compagnons pour ouvrir une chambre forte égyptienne. Mais cette chambre possède une serrure à code qui change régulièrement, et il a besoin du concours de plusieurs personnes pour l'ouvrir.

Amy, Rory, Clara et Rose sont placés chacun d'un côté de la chambre forte carrée, à l'extérieur :

Sur chacun des murs qui leur fait face, il y a 4 orifices qui permettent d'observer l'intérieur de la chambre. Il va falloir déterminer le code d'ouverture de la salle à partir des observations d'Amy, Rory, Clara et Rose réalisées par ces orifices.

À l'intérieur de la chambre sont disposées 16 « statuettes ». Depuis chaque orifice, on peut observer un alignement de 4 statuettes. Ces statuettes existent en 3 hauteurs différentes si bien qu'une statuette haute peut cacher une statuette plus petite placée derrière :

Chaque compagnon va indiquer combien il peut voir de sphères en or (sommet des statuettes), par chaque orifice. Il faudra en déduire la taille de chaque statuette.

Dans l'exemple qui précède, Amy regarde par chacun des quatre orifices dans l'ordre indiqué sur le schéma. Elle observe trois sphères en or dans le premier orifice, puis deux dans le deuxième, trois dans le troisième, et enfin une seule dans le quatrième. La figure suivante explique pourquoi (on a indiqué en jaune les sphères qu'Amy peut voir) :

Dans le cas de la figure précédente, voici la liste des observations réalisées par Amy, Rory, Clara et Rose, en tournant toujours dans le même sens autour de la chambre comme indiqué sur la figure suivante :

3, 2, 3, 1, 1, 1, 1, 1, 1, 2, 3, 2, 3, 1, 2, 3

Ces observations sont l'entrée du problème (16 nombres entre 1 et 3).

À partir de ces observations, on peut déterminer les positions des statuettes. Dans la grille suivante, on note 0 pour une petite statuette, 1 pour une statuette moyenne, et 2 pour une grande statuette :

À présent, en lisant les tailles des statuettes ligne par ligne de haut en bas, on obtient :

0120 1210 0121 2222

Ceci peut être interprété comme un nombre en base 3, qui s'écrirait en base 10 : 8287919. C'est ce nombre (8287919) qui permet alors de déverrouiller la chambre forte.

Le Docteur est tout à fait capable, à partir de ces observations, de déterminer où sont placées les statuettes, et d'en déduire le code d'ouverture. Mais tout génial qu'il est, il lui faut quelques instants. Or, les hauteurs des statuettes, et donc le code d'ouverture, changent toutes les 5 secondes environ, ce qui est trop court, même pour le Docteur.

Il a fait appel à vos services pour lui fournir un système capable de calculer rapidement le code de déverrouillage à partir des 16 observations.

Vous devez récupérer les observations via l’URL de récupération des entrées (au format JSON). Puis, vous aurez 5 secondes pour envoyer, via l'URL de soumission, votre réponse (au format JSON) contenant :

  • la signature qui vous a été communiquée lors de la première requête.
  • le champ code contenant un entier, le code d'ouverture de la chambre forte.

Dans l'exemple qui précède, vous auriez obtenu en entrée :

{ 'signature': 'XXXXXXX',
  'observations': [3, 2, 3, 1, 1, 1, 1, 1, 1, 2, 3, 2, 3, 1, 2, 3]
}

Et vous auriez dû fournir la réponse suivante :

{ 'signature': 'XXXXXXX',
  'code': 8287919
}
Vous devez être connecté.e pour accéder aux entrées et proposer une réponse au défi.
Vous devez être connecté.e pour accéder aux forums.