Uma das razões pelas quais eu sempre amei Pokemon é porque, para um jogo tão simples, ele tem muitas camadas de complexidade. Vamos considerar o movimento Hidden Power. No jogo, o tipo e o poder (pelo menos antes da Geração VI) de Hidden Power é diferente para cada Pokémon que o usa! Isso é bem legal, né? Agora, você ficaria surpreso se eu lhe dissesse que o tipo e o poder do Hidden Power não são gerados aleatoriamente?
Em todos os jogos de Pokemon, todos os Pokémon (não apenas os do seu grupo, ALL POKEMON) têm seis números inteiros armazenados internamente (um para o status da HP, um para o status do ataque, um para o status do ataque, um para o status da defesa, um para o status especial do ataque, um para o status de defesa especial e outro para o status de velocidade) denominavam seus valores individuais, ou IVs. Esses valores variam entre 0 e 31, e são essencialmente um dos poucos fatores que influenciam as estatísticas gerais de um Pokémon. No entanto, eles também determinam o tipo e o poder do poder oculto!
Nas gerações III a V (as gerações cujo algoritmo iremos implementar), o tipo de potência oculta é determinado pela seguinte fórmula (observe os colchetes, isso significa que você precisa arredondar o resultado):
onde a, b, c, d, e ef são os bits menos significativos do HP, Ataque, Defesa, Velocidade, Sp. Ataque e Sp. IVs de defesa, respectivamente. (O bit menos significativo é IV mod 2.) O número produzido aqui pode ser convertido no 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 poder, uma fórmula semelhante é usada:
Aqui, no entanto, u, v, w, x, ye z representam o segundo bit menos significativo do HP, Attack, Defense, Speed, Sp. Ataque e Sp. IVs de defesa (nessa ordem novamente). (O segundo bit menos significativo é mais complicado que o bit menos significativo. Se o IV mod 4 for 2 ou 3, o bit será 1, caso contrário, será 0. Se o seu idioma tiver algum tipo de recurso interno ou pelo menos uma maneira mais inteligente para fazer isso, você provavelmente deve usá-lo.)
Então, como você provavelmente já descobriu, o desafio aqui é escrever um programa que inclua seis números inteiros separados por espaços via STDIN que representem HP, Ataque, Defesa, Velocidade, Sp. Ataque e Sp. Defende IVs de um Pokémon (nessa ordem) e produz o tipo e o poder do Hidden Power desse Pokémon.
Entrada de amostra:
30 31 31 31 30 31
Saída de amostra:
Grass 70
Entrada de amostra:
16 18 25 13 30 22
Saída de amostra:
Poison 61
Isso é código-golfe, então o código mais curto vence. Boa sorte!
(E antes que as pessoas perguntem, eu usei o algoritmo da Geração V aqui porque a Geração VI se livra da randomização de potência e a torna sempre 60. Não apenas acho que isso é incrivelmente idiota, como também torna o desafio MUITO INTERESSANTE. para os propósitos do desafio, estamos executando um jogo da Geração V.)