Hintergrund
Diese Frage ähnelt dieser . Ich habe alle unten benötigten Informationen bereitgestellt. Wenn Sie mit der anderen Herausforderung vertraut sind, beachten Sie, dass wir alle Verteidigungen bewerten, anstatt die Wirksamkeit eines einzelnen Angriffs zu sehen. Dies ist wichtig, da dies bedeutet, dass die Tabellen invers zueinander sind und das Ziel dieser Herausforderung darin besteht, ohne Benutzereingaben zu sein.
In Pokemon gibt es 18 Typen:
Normal Fighting Flying Poison Ground Rock
Bug Ghost Steel Fire Water Grass
Electric Psychic Ice Dragon Dark Fairy
Pokemon haben entweder einen oder zwei eindeutige Typen, die sie definieren (eine "Typenkombination"). Zum Beispiel hat ein Bulbasaur die Typenkombination Gras / Gift (es gibt zwei Typen, Gras und Gift) und ein Charmander hat die Typenkombination Feuer (mit nur einem Typ). Die Reihenfolge der Typen spielt keine Rolle (dh Gras / Gift ist dasselbe wie Gift / Gras).
Diese Typen haben alle Stärken und Schwächen:
- Ein Typ kann für einen anderen Typ schwach sein. Feuer ist schwach gegen Wasser. Dies führt dazu, dass Feuer einen 2 × Multiplikator gegen Wasser hat.
- Ein Typ kann gegen einen anderen Typ resistent sein. Wasser ist wasserbeständig. Dies führt dazu, dass Wasser einen 0,5 × Multiplikator gegen Wasser hat.
- Ein Typ kann gegen einen anderen Typ immun sein. Fliegen ist immun gegen Boden. Dies führt dazu, dass das Fliegen einen 0 × Multiplikator gegen Boden hat.
Alles andere erhält einen Standard 1 × Multiplikator. Normal gegen Normal würde zu einem 1 × Multiplikator führen. Dies ist ein Beispiel dafür. Diese Stärken und Schwächen können ebenfalls verstärkt oder negiert werden. Zum Beispiel ist Feuer für Wasser schwach, aber ein Feuer / Wasser-Dual-Typ hätte einen 1 × Multiplikator gegen Wasser, da die Schwäche von Feuer den Widerstand von Wasser negieren würde. Eine vollständige Tabelle und eine weitere Erklärung finden Sie unten.
Zielsetzung
Ziel ist es, eine Liste aller Arten von Kombinationen auszugeben, die in der Reihenfolge ihrer Verteidigungsfähigkeit sortiert sind und deren Anzahl (Resistenzen + Immunitäten), Schwächen und das Verhältnis zwischen diesen auflisten. Im Einzelnen ist die Sortierreihenfolge wie folgt: Typkombinationen mit dem besten Verhältnis von (Resistenzen + Immunitäten) zu Schwächen werden zuerst aufgelistet, und wenn es ein Unentschieden gibt, gewinnen Typkombinationen mit den meisten Resistenzen und Immunitäten den Tiebreak. Sie können diese Liste auf beliebige Weise erstellen (eine naheliegende Methode besteht darin, eine Berechnung der Typeneffektivität für jede Typkombination durchzuführen. Sie können jedoch vorberechnete oder teilweise vorberechnete Ausgaben in Ihrem Programm speichern, wenn dies zu einer Verkürzung führen würde.)
Typ Effektivitätstabelle
Eine für Menschen lesbare Tabelle finden Sie in der Pokemon-Datenbank. Hinweis: Die Spalten dieser Liste sind das, was wir in Betracht ziehen. Aber nur für den Fall, hier ist die Tabelle, an die ich denke, in einer komprimierten computerfreundlichen Matrix der Effektivität. Ich habe jeden Wert mit 2 multipliziert, damit wir uns nicht mit lästigen Dezimalstellen befassen müssen:
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
Beispiel
Wenn dieses Problem nur die Ausgabe für Einzeltypkombinationen angefordert hätte, würde eine gültige Ausgabe folgendermaßen aussehen:
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
Ihr Programm muss jedoch auch alle Dual-Type-Kombinationen in der Ausgabe auflisten, damit die Ausgabe erheblich länger ist.
Viel Glück! Der kürzeste Code in Bytes gewinnt.
quelle
Antworten:
Python 2, 784 Bytes
Ausgänge:
quelle