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.)
Réponses:
Pyth, 110 octets
Il contient des caractères non imprimables. Voici donc un hexdump:
Vous pouvez également télécharger le fichier pokemon.pyth et l'exécuter avec
python3 pyth.py pokemon.pyth
L'entrée
30, 31, 31, 31, 30, 31
imprimeExplication:
la source
Rubis, 210
Golf pour la première fois, donc je suppose que c'est une solution assez évidente.
la source
CJam,
140115 octetsNotez que le code contient des caractères non imprimables.
Essayez-le en ligne dans l'interpréteur CJam: Chrome | Firefox
la source
Javascript (ES6), 251 octets
Un peu long, du moins pour l'instant. La liste des types et les mathématiques complexes occupent à peu près la même quantité d'espace. Je cherche des moyens de raccourcir l'un ou les deux.
Comme d'habitude, les suggestions sont les bienvenues!
la source
Javascript (ES6), 203 octets
L'exemple s'exécute:
la source