Les téléportations d'Abra

Prévoyez où Abra va apparaître.

Ce défi est tiré de c0d1ngUP 2017

Même lorsqu'Abra dort, c'est à dire la plupart du temps, il peut fuir un ennemi en se téléportant.

Abra vient de passer en mode automatique... toutes les 3 secondes, il se déplace à un endroit différent. Pour pouvoir continuer à se téléporter en dormant, il est relié à une machine qui génère des nombres aléatoires. Chaque nombre généré le fait se déplacer automatiquement dans une direction.

Le générateur de nombres pseudo-aléatoires d'Abra (un peu simpliste) est programmé ainsi :

val <- valeur initiale
répéter indéfiniment :
    fournir la valeur val
    val <- (137 * val + 187) % 256

Par exemple, si la valeur initiale vaut 30, les nombres générés seront : 30, 201, 76, 103, 218, 101, 200...

Toutes les 3 secondes Abra reçoit donc une valeur. Selon le chiffre des unités de cette valeur, il réalise un déplacement :

  • de 1 m vers le nord si le chiffre des unités est 0
  • de 1 m vers l'est si le chiffre des unités est 1
  • de 1 m dans la même direction que la dernière direction prise sinon

Pour attraper Abra, il va falloir prévoir comment il se sera déplacé en 10 minutes.

Par exemple, si la valeur initiale du générateur de nombres pseudo-aléatoires était 30, au bout de 3 s, Abra se serait déplacé de 1 m vers le nord. Le nombre suivant serait 201. Voici ce que seraient les positions d'Abra en fonction du temps écoulé :

t    dépl N.  dépl E.  Aléa
0       0       0       30
3       1       0       201
6       1       1        76
9       1       2       103
12      1       3       218
15      1       4       101
18      1       5       200
21      2       5       ...

Au bout de 21 s, Abra se serait donc déplacé de 2 m vers le nord et 5 m vers l'est.

Si la valeur initiale était 30, au bout de 10 minutes, Abra se serait globalement déplacé de 102 m vers le nord et 98 m vers l'est. Pour valider, il faudrait donc répondre 102, 98.

La vraie valeur initiale du générateur n'est pas 30, elle vous est donnée en entrée du problème. Pour valider le défi, donnez les 2 nombres indiquant quel sera le déplacement global d'Abra au bout de 10 minutes.

Type de retour
un couple de nombres entiers
Entrées du problème

10

Vous devez être connecté.e pour proposer une réponse au défi
Vous devez être connecté.e pour accéder aux forums.