L'une des raisons pour lesquelles j'ai toujours aimé Pokemon est que, pour un jeu aussi simple, il a tellement de couches de complexité. Prenons le mouvement Hidden Power. Dans le jeu, le type et la puissance (au moins avant la génération VI) de la puissance cachée sont différents pour chaque Pokémon qui l'utilise! C'est plutôt cool, non? Maintenant, seriez-vous surpris si je vous disais que le type et la puissance de Hidden Power ne sont pas générés de manière aléatoire?
Dans tous les jeux Pokemon, tous les Pokémon (pas seulement ceux de votre groupe, ALL POKEMON) ont six entiers stockés en interne (un pour la statistique HP, un pour la statistique d'attaque, un pour la statistique de défense, un pour la statistique d'attaque spéciale, un pour la statistique de défense spéciale et un pour la statistique de vitesse) appelés leurs valeurs individuelles, ou IV. Ces valeurs varient entre 0 et 31, et elles sont essentiellement l'un des quelques facteurs qui influencent les statistiques générales d'un Pokémon. CEPENDANT, ils déterminent également le type et la puissance de la puissance cachée!
Dans la génération III à V (les générations dont nous allons implémenter l'algorithme), le type de puissance cachée est déterminé par la formule suivante (notez les crochets au sol, cela signifie que vous devez arrondir le résultat):
où a, b, c, d, e et f sont les bits les moins significatifs des HP, Attack, Defense, Speed, Sp. Attaque et Sp. IV de défense respectivement. (Le bit le moins significatif est IV mod 2.) Le nombre produit ici peut alors être converti en type réel à l'aide de ce tableau:
0 Fighting
1 Flying
2 Poison
3 Ground
4 Rock
5 Bug
6 Ghost
7 Steel
8 Fire
9 Water
10 Grass
11 Electric
12 Psychic
13 Ice
14 Dragon
15 Dark
Pour le pouvoir, une formule similaire est utilisée:
Ici, cependant, u, v, w, x, y et z représentent le deuxième bit le moins significatif des HP, Attack, Defense, Speed, Sp. Attaque et Sp. Défense IVs (dans cet ordre encore). (Le deuxième bit le moins significatif est plus compliqué que le bit le moins significatif. Si IV mod 4 est 2 ou 3, alors le bit est 1, sinon il est 0. Si votre langue a une sorte de intégré ou au moins une manière plus intelligente pour ce faire, vous devriez probablement l'utiliser.)
Donc, comme vous l'avez probablement déjà compris, le défi ici est d'écrire un programme qui prend six entiers séparés par des espaces via STDIN qui représentent les HP, Attack, Defense, Speed, Sp. Attaque et Sp. Défendez les IV d'un Pokémon (dans cet ordre) et produisez le type et la puissance du pouvoir caché de ce Pokémon.
Exemple d'entrée:
30 31 31 31 30 31
Exemple de sortie:
Grass 70
Exemple d'entrée:
16 18 25 13 30 22
Exemple de sortie:
Poison 61
C'est le code-golf, donc le code le plus court l'emporte. Bonne chance!
(Et avant que les gens ne demandent, j'ai utilisé l'algorithme de génération V ici parce que la génération VI se débarrasse de la randomisation de la puissance et la rend toujours 60. Non seulement je pense que c'est incroyablement boiteux, je pense que cela rend le défi beaucoup moins intéressant. pour les besoins du défi, nous organisons un jeu Gen V.)