Concurso de efetividades especiais de Pokémon

Você recebe dados contendo informações sobre os 100 primeiros Pokémon, além de relações especiais de efetividade. Use esses dados para definir uma função que receba dois números de Pokémon e calcule qual Pokémon vence com base em seus tipos.

Como calcular?

  • Dados dois Pokémon, digamos o #3 (Venusaur) e o #6 (Charizard), use os dados fornecidos para obter seus respectivos tipos—(grass, poison), (fire, flying).
  • Começaremos com Venusaur. Seu primeiro tipo é grass. Para cada tipo do oponente de Venusaur, use os dados para obter a efetividade de grass. O tipo grass tem efetividade de 0.5x (pouco efetivo) contra fire e flying. Multiplique esses valores: 0.5 * 0.5 = 0.25. Assim, 'grass' tem efetividade de 0.25 contra Charizard. Repita isso com o segundo tipo de Venusaur, poison, e Venusaur terá duas pontuações para seus dois tipos: (0.25, 1.0). Calcule a média delas para obter a pontuação final de Venusaur: 0.625. Quando um Pokémon tem apenas um tipo, ele terá apenas uma pontuação e não será necessário calcular a média.
  • Quando tiver feito isso para ambos os Pokémon, você terá duas pontuações—uma para cada Pokémon. Retorne o número do Pokémon com a maior pontuação ou retorne -1 em caso de empate.

Exemplos

pk_special_winner(33, 28) ➞ 28

pk_special_winner(77, 52) ➞ -1

pk_special_winner(25, 44) ➞ 44

pk_special_winner(57, 51) ➞ -1

pk_special_winner(98, 34) ➞ 98

Observações

  • Um tipo é dobrado quando é super efetivo e reduzido pela metade quando não é muito efetivo. Em combinações, como fire contra um Pokémon dos tipos bug e grass, as pontuações de efetividade são multiplicadas. Portanto, fire seria quatro vezes mais efetivo contra esse oponente. Consulte isto para obter mais informações.
    • Observe que, quando um Pokémon tem dois tipos, ele terá duas pontuações de efetividade, e esta função exige que elas sejam calculadas pela média. Não confunda as multiplicações com as médias.

Agradecimentos aos provedores dos dados:

Desafio bônus

Qual Pokémon vence a maioria de seus oponentes neste conjunto de dados? Veja minha resposta nos comentários.