Una de las razones por las que siempre me ha encantado Pokemon es porque para un juego tan simple, tiene muchas capas de complejidad. Consideremos el movimiento Hidden Power. En el juego, el tipo y el poder (al menos antes de la Generación VI) de Hidden Power es diferente para cada Pokémon que lo usa. Eso es genial, ¿verdad? Ahora, ¿se sorprendería si le dijera que el tipo y el poder de Hidden Power no se generan al azar?
En todos los juegos de Pokémon, todos los Pokémon (no solo los de tu grupo, TODOS LOS POKEMON) tienen seis enteros almacenados internamente (uno para la estadística HP, uno para la estadística de ataque, uno para la estadística de defensa, uno para la estadística de ataque especial, uno para la estadística de defensa especial y otro para la estadística de velocidad) llamados sus valores individuales, o IVs. Estos valores oscilan entre 0 y 31, y esencialmente son uno de los pocos factores que influyen en las estadísticas generales de un Pokémon. ¡SIN EMBARGO, también determinan el tipo y el poder de Hidden Power!
En la Generación III a V (las generaciones cuyo algoritmo implementaremos), el tipo de Hidden Power está determinado por la siguiente fórmula (tenga en cuenta los corchetes, lo que significa que necesita redondear el resultado):
donde a, b, c, d, e y f son los bits menos significativos de HP, Attack, Defense, Speed, Sp. Ataque, y Sp. Defensa IVs respectivamente. (El bit menos significativo es IV mod 2.) El número producido aquí se puede convertir al tipo real usando este gráfico:
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
Para el poder, se usa una fórmula similar:
Aquí, sin embargo, u, v, w, x, y y z representan el segundo bit menos significativo de HP, Attack, Defense, Speed, Sp. Ataque y Sp. Defensa IVs (en ese orden nuevamente). (El segundo bit menos significativo es más complicado que el bit menos significativo. Si IV mod 4 es 2 o 3, entonces el bit es 1, de lo contrario es 0. Si su idioma tiene algún tipo de forma integrada o al menos una forma más inteligente para hacer esto, probablemente deberías usarlo).
Entonces, como probablemente ya descubrió, el desafío aquí es escribir un programa que tome seis enteros separados por espacios a través de STDIN que representan HP, Attack, Defense, Speed, Sp. Ataque y Sp. Defiende los IV de un Pokémon (en ese orden) y genera el tipo y el poder del Poder Oculto de ese Pokémon.
Entrada de muestra:
30 31 31 31 30 31
Salida de muestra:
Grass 70
Entrada de muestra:
16 18 25 13 30 22
Salida de muestra:
Poison 61
Este es el código de golf, por lo que gana el código más corto. ¡Buena suerte!
(Y antes de que la gente pregunte, usé el algoritmo de la Generación V aquí porque la Generación VI se deshace de la aleatorización de potencia y la hace siempre 60. No solo creo que esto es increíblemente pobre, creo que hace que el desafío sea MUCHO MENOS INTERESANTE. a los fines del desafío, estamos ejecutando un juego de Gen V.)
Respuestas:
Pyth, 110 bytes
Este contiene caracteres no imprimibles. Entonces aquí hay un hexdump:
También puede descargar el archivo pokemon.pyth y ejecutarlo con
python3 pyth.py pokemon.pyth
La entrada
30, 31, 31, 31, 30, 31
imprimeExplicación:
fuente
Rubí, 210
Golf por primera vez, así que supongo que esta es una solución bastante obvia.
fuente
CJAM,
140115 bytesTenga en cuenta que el código contiene caracteres no imprimibles.
Pruébelo en línea en el intérprete de CJam: Chrome | Firefox
fuente
Javascript (ES6), 251 bytes
Un poco largo, al menos por ahora. La lista de tipos y las matemáticas complejas ocupan aproximadamente la misma cantidad de espacio. Estoy buscando formas de acortar cualquiera / ambos.
Como de costumbre, las sugerencias son bienvenidas!
fuente
Javascript (ES6), 203 bytes
Ejecuciones de ejemplo:
fuente