W świecie gier Pokemon każdy ruch oraz pokemon mają określone typy, które determinują skuteczność (liczbę obrażeń) poszczególnych ruchów przeciw poszczególnym typom pokemonów.
Jeżeli dany typ ruchu (ataku) jest efektywny przeciwko danemu typowi pokemona, to obrażenia są podwajane. Jeżeli dany typ ruchu (ataku) nie jest efektywny przeciwko danemu typowi pokemona, to obrażenia są połowiczne. Jeżeli dany typ ruchu (ataku) nie ma efektu przeciwko danemu typowi pokemona, to obrażenia są zerowe.
Przykładowo typ wodny dobrze sprawdza się przeciwko typowi ognistemu, co skutkuje zdublowaniem obrażeń. Dodatkowo niektóre pokemony mogą mieć kilka typów - w takim przypadku należy uwzględnić efektywność ruchu przeciwko każdemu z nich (iloczyn).
- fire -> grass = 2x
- fighting -> ice rock = 4x
- psychic -> poison dark = 0x
- water -> normal = 1x
- fire -> rock = 0.5x
W celu określenia efektywności ruchów skorzystaj z PokeAPI: https://pokeapi.co/docs/v2#types https://pokeapi.co/docs/v2#moves-section https://pokeapi.co/docs/v2#pokemon
Przykład zapytania GET dla typu ognistego:
curl https://pokeapi.co/api/v2/type/fireModyfikuj wyłącznie plik solution.py.
W sumie można zdobyć 100 punktów.
python -m unittest test.TestPokemonAPI.test_get_type_data_0- 5 pkt.python -m unittest test.TestPokemonAPI.test_get_type_data_1- 5 pkt.python -m unittest test.TestPokemonAPI.test_calculate_effectiveness_for_single_type_0- 5 pkt.python -m unittest test.TestPokemonAPI.test_calculate_effectiveness_for_single_type_1- 5 pkt.python -m unittest test.TestPokemonAPI.test_calculate_effectiveness_for_single_type_2- 5 pkt.python -m unittest test.TestPokemonAPI.test_calculate_effectiveness_for_single_type_3- 5 pkt.python -m unittest test.TestPokemonAPI.test_calculate_effectiveness_for_double_type_0- 5 pkt.python -m unittest test.TestPokemonAPI.test_calculate_effectiveness_for_double_type_1- 5 pkt.python -m unittest test.TestPokemonAPI.test_calculate_effectiveness_for_double_type_2- 5 pkt.python -m unittest test.TestPokemonAPI.test_calculate_effectiveness_for_double_type_3- 5 pkt.python -m unittest test.TestPokemonAPI.test_calculate_effectiveness_for_move_single_type- 10 pkt.python -m unittest test.TestPokemonAPI.test_calculate_effectiveness_for_move_double_type- 10 pkt.python -m unittest test.TestPokemonAPI.test_get_most_effective_move_0- 10 pkt.python -m unittest test.TestPokemonAPI.test_get_most_effective_move_1- 10 pkt.python -m unittest test.TestPokemonAPI.test_execution_time_of_all_methods- 10 pkt.