Pokémoni

Predstav si, že si tréner pokémonov a chcel by si vypočítať či tvoj tým má výhodu pred súperovým na základe jednotlivých typov pokémonov v tvojom tíme. Každý tím, može mať 1 - 6 pokémonov.

Pokémoni možu byť:

A ako to už býva, každý pokémon má svoje silne aj slabé stránky, či už v útoku, alebo obrane proti iným typom pokémonov.

Na príklad fire pokémon je proti water slabý aj v útoku aj v obrane. To znamená, že utočný faktor ma 0.5 na vodného pokémona, ale dostane 2 poškodenie, pokiaľ naň ho tento pokémon útočí. Ghost pokémon ma útočný faktor 1 na fighting pokémena, ale dostane 0, pokiaľ naň ho tento pokémon útočí atď.

Ako však vypočítať faktor, keď sa útočí na dvojtypového pokémona? Je to jednoduché, ako súčin ich faktorov. Teda utočný faktor water pokémona na pokémena ground/rock je 4 (2*2), útočný faktor fighting pokémena na flying/psychic je 0.25 (0.5 *0.5) a útočný faktor electric pokémona na ground/water je 0 (0*2)

A keď útočí dvojtypový pokémenon, má dva útoky ? Nie, dvojtypový pokémon nemá dva útoky. Jednoducho si vyberie ten silnejší. Ak by zautočil fire/water na grass pokémona, bola by sila jeho útoku 2.

Tu máme tabuľku útokov: https://pokemondb.net/type

A pre tých, ktorí vedia, čo je to .json ako sa s tým da pracovať, tak tu je takýto poklad: https://github.com/yorkcshub/Code-Contest/blob/master/effectiveness.json Hint: Je možné z .json vytvoriť takú dátovu štruktúru akú budete potrebovať. Mozno by bola vhodna takáto struktura[water][fire] - vrati koeficient utoku water na fire

Úloha

Nájsť, ktorý z dvoch tímov vyhrá vzájomný súboj a to tak, že pre každý vypočítaš jeho celkovú utočnú silu s využitím tabuľky publikovanej vyššie. Útočný koeficiet z tabuľky zistiš nasledovne: 2 pre 200%, 1 pre 100%, 0.5 pre 50%, 0.25 pre 25% a 0 pre 0%.

Vstup

Nech je funkcia attack(N1,N2,listpok) , kde N1 je počet pokémenov v jednom tíme, N2 je počet pokemonov v druhom tíme a listpok je zoznam pokemonov oddelených čiarkov, mená dvojtypových pokemonov sú oddeelené medzerov, kde prvých N1 pokémonov patrí prvému tímu a zvyšných N2 patrí druhému tímu.
Príklad vstupu 
attack(2,6,"Psychic Dark,Fire,Ghost Ice,Fairy Electric,Normal Steel,Ghost,Poison Fire,Dark Bug")
Príklad výstupu
(17.0,16.0,"ME")

Výstup

Nech návrátova hodnota funckie je usporiadaná trojica (f1,f2,s1) , kde f1 je typu float a reprezentuje útočnú silu prvého tímu na druhý, f2 je typu float a reprezentuje útočnú silu druhého tímu na prvý. A s1 je reťazec smožnými hodnotami "ME" ak vyhrá prvý tím, "FOE" ak vyhrá druhý tím a "EQUAL" ak sú ich utočné sily rovnaké. Hodnoty f1,f2 nech sú vyjadrené na jedno desatinné miesto.

V tomto prípade má prvý (tvoj) tím 2 pokémonov (Psychic Dark,Fire) a zvyšný tím 6 pokémenov (Ghost Ice,Fairy Electric,Normal Steel,Ghost,Poison Fire,Dark Bug)


Príklad

V tomto prípade má prvý (tvoj) tím 2 pokémonov (Psychic Dark,Fire) a zvyšný tím 6 pokémenov (Ghost Ice,Fairy Electric,Normal Steel,Ghost,Poison Fire,Dark Bug)

psychic/dark=max(11,21)+max(11,0.51)+max(10.5,11)+max(1,2)+max(21,11)+max(01,0.51)=2+1+1+2+2+0.5=8.5

fire=12+11+12+1+10.5+12=2+1+2+1+0.5+2=8.5

cumulativetypeadvantage=8.5+8.5=17.0