tło
To pytanie jest podobne do tego . Podałem wszystkie potrzebne informacje poniżej. Jeśli znasz inne wyzwanie, pamiętaj, że oceniamy wszystkie obrony, zamiast widzieć skuteczność pojedynczego ataku. Jest to ważne, ponieważ oznacza, że tabele są odwrócone względem siebie, a celem tego wyzwania jest brak udziału użytkownika.
W Pokemon jest 18 typów:
Normal Fighting Flying Poison Ground Rock
Bug Ghost Steel Fire Water Grass
Electric Psychic Ice Dragon Dark Fairy
Pokemon ma jeden lub dwa unikalne typy, które je definiują („kombinacja typów”). Na przykład Bulbasaur ma kombinację typów Trawa / Trucizna (ma dwa typy, Trawa i Trucizna), a Charmander ma kombinację typów Ogień (mający tylko jeden typ). Kolejność typów nie ma znaczenia (tzn. Trawa / Trucizna jest taka sama jak Trucizna / Trawa).
Wszystkie te typy mają mocne i słabe strony:
- Typ może być słaby w stosunku do innego. Ogień jest słaby przeciwko wodzie. Powoduje to, że Ogień ma mnożnik 2 × w stosunku do Wody.
- Typ może być odporny na inny typ. Woda jest odporna na wodę. Powoduje to, że woda ma mnożnik 0,5 × względem wody.
- Typ może być odporny na inny typ. Latanie jest odporne na Ziemię. Powoduje to, że Flying ma mnożnik 0 × względem ziemi.
Wszystko inne otrzymuje standardowy mnożnik 1 ×. Przykładem tego jest normalny w stosunku do normalnego, w wyniku którego mnożnik 1 × jest tego przykładem. Te mocne i słabe strony mogą być również spotęgowane lub zanegowane. Na przykład Ogień jest słaby w stosunku do Wody, ale podwójny typ Ogień / Woda miałby mnożnik 1 × w stosunku do Wody, ponieważ słabość Ognia zniweczyłaby opór Wody. Pełną tabelę i dalsze wyjaśnienia znajdują się poniżej.
Cel
Celem jest wygenerowanie listy wszystkich typów kombinacji, posortowanych w kolejności ich zdolności obronnych i wykazu ich liczby (odporności + odporności), słabości i stosunku między nimi. W szczególności kolejność sortowania jest następująca: kombinacje typów o najlepszym stosunku (odporności + odporności) do słabości są wymienione jako pierwsze, a jeśli jest remis, kombinacje typów o największej odporności i odporności wygrywają rozstrzygnięcie remisu. Możesz wygenerować tę listę za pomocą dowolnych środków (oczywistą metodą jest wykonanie obliczenia skuteczności typu dla każdej kombinacji typów, ale możesz przechowywać w programie wstępnie obliczone lub częściowo wstępnie obliczone dane wyjściowe, jeśli spowoduje to ich skrócenie).
Tabela efektywności typów
Aby zobaczyć tabelę czytelną dla człowieka, zobacz bazę danych Pokemon. Uwaga: rozważamy kolumny tej listy. Ale na wszelki wypadek, oto tabela, o której myślę, w skompresowanej, przyjaznej komputerowo matrycy skuteczności. Mnożyłem każdą wartość przez 2, więc nie mamy do czynienia z nieznośnymi miejscami po przecinku:
Attacking type
(same order)
Nor 222222422222202222
Fir 214211224221422211
D Wat 211441222222222212
e Ele 222122224122222212
f Gra 241114241424222222
e Ice 242221422222422242
n Fig 222222222441122124
d Poi 222212114241222221
i Gro 224044212222122222
n Fly 222414120221422222
g Psy 222222122214242422
Bug 242212121422422222
T Roc 114242414122222242
y Gho 022222012221242422
p Dra 211114222222224224
e Dar 222222422204212124
Ste 142211404111121211
Fai 222222142221220142
Przykład
Jeśli ten problem zażądał danych wyjściowych tylko dla kombinacji typów jednego typu, prawidłowe dane wyjściowe wyglądałyby tak:
Steel -> 11/3 = 3.66
Electric -> 3/1 = 3
Poison -> 5/2 = 2.5
Fire -> 6/3 = 2
Water -> 4/2 = 2
Ghost -> 4/2 = 2
Fairy -> 4/2 = 2
Fly -> 4/3 = 1.333
Dragon -> 4/3 = 1.333
Fighting -> 3/3 = 1
Normal -> 1/1 = 1
Ground -> 3/3 = 1
Psychic -> 2/2 = 1
Bug -> 3/3 = 1
Dark -> 3/3 = 1
Grass -> 4/5 = 0.8
Rock -> 4/5 = 0.8
Ice -> 1/4 = 0.25
Jednak twój program będzie musiał także wymienić wszystkie kombinacje podwójnego typu na wyjściu, więc jego wynik będzie znacznie dłuższy.
Powodzenia! Najkrótszy kod w bajtach wygrywa.