Die langlebigsten Pokemon-Typen


9

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.



3
Und willkommen bei PPCG! :)
Martin Ender

1
Ich denke, dies hat das offensichtliche Problem, dass die Antwort kleiner ist als die Daten, die zur Lösung der Frage benötigt werden, und daher wird eine erfolgreiche Lösung nur die Ausgabe fest codieren. Um das Problem zu lösen, müssen Sie wahrscheinlich die Herausforderung ändern, um die Typ-Effektivitätsmatrix zur Laufzeit als Eingabe zu verwenden.

@ ais523 Ich glaube, das Komprimieren der Matrix sollte der Kern der Herausforderung sein, und im Prinzip sehe ich daran nichts auszusetzen (obwohl in diesem Fall diese genaue Tabelle leider zuvor Gegenstand einer Herausforderung war).
Martin Ender

2
@MartinEnder Es ist mehr als verwandt ... Wenn Sie die Einführung durchgehen, wird es zu 100% kopiert und dann so geändert, dass es nicht so aussieht, als wäre es kopiert. Es folgt genau der gleichen Struktur, die Starttypen sind in der gleichen Reihenfolge, gleich formatiert. Es ist nur ein offensichtliches Plagiat, ohne es zu erwähnen und zu versuchen, es zu verbergen.
Orlp

Antworten:


2

Python 2, 784 Bytes

i=['Normal','222222422222202222'],['Fire','214211224221422211'],['Water','211441222222222212'],['Electric','222122224122222212'],['Grass','241114241424222222'],['Ice','242221422222422242'],['Fighting','222222222441122124'],['Poison','222212114241222221'],['Ground','224044212222122222'],['Flying','222414120221422222'],['Psychic','222222122214242422'],['Bug','242212121422422222'],['Rock','114242414122222242'],['Ghost','022222012221242422'],['Dragon','211114222222224224'],['Dark','222222422204212124'],['Steel','142211404111121211'],['Fairy','222222142221220142']
L=[]
for x,X in i:
 for y,Y in i[i.index([x,X]):]:
  S=W=0.
  for a,b in zip(X,Y):A=int(a)*int(b);W+=A>4;S+=A<4
  L+=[([x+'/'+y,x][x==y]+' -> %d/%d'%(S,W),S/W)]
for l in sorted(L, key=lambda l:-l[1]):print'%s = %.2f'%l

Ausgänge:

Bug/Steel -> 9/1 = 9.00
Steel/Fairy -> 11/2 = 5.50
Normal/Ghost -> 5/1 = 5.00
Water/Ground -> 5/1 = 5.00
Grass/Steel -> 10/2 = 5.00
Poison/Dark -> 5/1 = 5.00
Poison/Steel -> 10/2 = 5.00
Flying/Steel -> 10/2 = 5.00
Dragon/Steel -> 10/2 = 5.00
Normal/Steel -> 12/3 = 4.00
Electric/Poison -> 8/2 = 4.00
Electric/Steel -> 12/3 = 4.00
Ghost/Dark -> 4/1 = 4.00
Water/Steel -> 11/3 = 3.67
Dark/Steel -> 11/3 = 3.67
Steel -> 11/3 = 3.67
Fire/Steel -> 10/3 = 3.33
Fire/Ground -> 6/2 = 3.00
Water/Flying -> 6/2 = 3.00
Electric -> 3/1 = 3.00
Electric/Flying -> 6/2 = 3.00
Electric/Fairy -> 6/2 = 3.00
Ice/Steel -> 9/3 = 3.00
Fighting/Steel -> 9/3 = 3.00
Rock/Steel -> 9/3 = 3.00
Ghost/Steel -> 12/4 = 3.00
Fire/Electric -> 8/3 = 2.67
Water/Poison -> 8/3 = 2.67
Normal/Poison -> 5/2 = 2.50
Water/Electric -> 5/2 = 2.50
Poison -> 5/2 = 2.50
Ground/Flying -> 5/2 = 2.50
Ground/Steel -> 10/4 = 2.50
Psychic/Steel -> 10/4 = 2.50
Fire/Flying -> 7/3 = 2.33
Water/Fairy -> 7/3 = 2.33
Electric/Ghost -> 7/3 = 2.33
Normal/Electric -> 4/2 = 2.00
Normal/Fairy -> 4/2 = 2.00
Fire -> 6/3 = 2.00
Fire/Poison -> 8/4 = 2.00
Fire/Bug -> 6/3 = 2.00
Fire/Fairy -> 8/4 = 2.00
Water -> 4/2 = 2.00
Water/Ghost -> 8/4 = 2.00
Electric/Bug -> 4/2 = 2.00
Fighting/Poison -> 6/3 = 2.00
Poison/Fairy -> 6/3 = 2.00
Psychic/Ghost -> 4/2 = 2.00
Ghost -> 4/2 = 2.00
Ghost/Fairy -> 4/2 = 2.00
Dragon/Fairy -> 8/4 = 2.00
Fairy -> 4/2 = 2.00
Fire/Ghost -> 9/5 = 1.80
Normal/Fire -> 7/4 = 1.75
Fire/Rock -> 7/4 = 1.75
Fire/Dark -> 7/4 = 1.75
Poison/Dragon -> 7/4 = 1.75
Normal/Water -> 5/3 = 1.67
Fire/Water -> 5/3 = 1.67
Fire/Dragon -> 5/3 = 1.67
Water/Bug -> 5/3 = 1.67
Electric/Fighting -> 5/3 = 1.67
Ghost/Dragon -> 8/5 = 1.60
Fire/Fighting -> 6/4 = 1.50
Water/Dragon -> 3/2 = 1.50
Electric/Dragon -> 6/4 = 1.50
Electric/Dark -> 6/4 = 1.50
Poison/Ground -> 6/4 = 1.50
Poison/Flying -> 6/4 = 1.50
Poison/Rock -> 6/4 = 1.50
Poison/Ghost -> 6/4 = 1.50
Ground/Fairy -> 6/4 = 1.50
Flying/Dragon -> 6/4 = 1.50
Rock/Fairy -> 6/4 = 1.50
Fire/Psychic -> 7/5 = 1.40
Water/Fighting -> 7/5 = 1.40
Water/Dark -> 7/5 = 1.40
Grass/Fairy -> 7/5 = 1.40
Fighting/Dragon -> 7/5 = 1.40
Dragon/Dark -> 7/5 = 1.40
Normal/Flying -> 4/3 = 1.33
Fire/Grass -> 4/3 = 1.33
Fighting/Dark -> 4/3 = 1.33
Poison/Psychic -> 4/3 = 1.33
Ground/Dragon -> 4/3 = 1.33
Flying -> 4/3 = 1.33
Dragon -> 4/3 = 1.33
Dark/Fairy -> 4/3 = 1.33
Normal/Dragon -> 5/4 = 1.25
Water/Rock -> 5/4 = 1.25
Electric/Ground -> 5/4 = 1.25
Electric/Psychic -> 5/4 = 1.25
Electric/Rock -> 5/4 = 1.25
Grass/Poison -> 5/4 = 1.25
Fighting/Bug -> 5/4 = 1.25
Fighting/Ghost -> 5/4 = 1.25
Poison/Bug -> 5/4 = 1.25
Flying/Dark -> 5/4 = 1.25
Water/Psychic -> 6/5 = 1.20
Grass/Ghost -> 6/5 = 1.20
Ground/Ghost -> 6/5 = 1.20
Flying/Rock -> 6/5 = 1.20
Flying/Ghost -> 6/5 = 1.20
Flying/Fairy -> 6/5 = 1.20
Bug/Ghost -> 6/5 = 1.20
Bug/Fairy -> 6/5 = 1.20
Normal -> 1/1 = 1.00
Normal/Fighting -> 4/4 = 1.00
Normal/Ground -> 4/4 = 1.00
Normal/Psychic -> 2/2 = 1.00
Normal/Bug -> 3/3 = 1.00
Normal/Rock -> 5/5 = 1.00
Normal/Dark -> 3/3 = 1.00
Fire/Ice -> 4/4 = 1.00
Water/Grass -> 3/3 = 1.00
Electric/Grass -> 4/4 = 1.00
Grass/Fighting -> 6/6 = 1.00
Grass/Dark -> 7/7 = 1.00
Ice/Poison -> 5/5 = 1.00
Ice/Ghost -> 5/5 = 1.00
Ice/Fairy -> 4/4 = 1.00
Fighting -> 3/3 = 1.00
Fighting/Flying -> 5/5 = 1.00
Fighting/Fairy -> 5/5 = 1.00
Ground -> 3/3 = 1.00
Ground/Bug -> 4/4 = 1.00
Ground/Rock -> 6/6 = 1.00
Ground/Dark -> 6/6 = 1.00
Psychic/Dragon -> 6/6 = 1.00
Psychic/Fairy -> 3/3 = 1.00
Bug -> 3/3 = 1.00
Bug/Dragon -> 5/5 = 1.00
Bug/Dark -> 5/5 = 1.00
Rock/Ghost -> 6/6 = 1.00
Rock/Dark -> 7/7 = 1.00
Dark -> 3/3 = 1.00
Grass/Psychic -> 6/7 = 0.86
Fighting/Rock -> 6/7 = 0.86
Normal/Grass -> 5/6 = 0.83
Grass/Bug -> 5/6 = 0.83
Fighting/Ground -> 5/6 = 0.83
Ground/Psychic -> 5/6 = 0.83
Rock/Dragon -> 5/6 = 0.83
Grass -> 4/5 = 0.80
Grass/Flying -> 4/5 = 0.80
Flying/Psychic -> 4/5 = 0.80
Flying/Bug -> 4/5 = 0.80
Rock -> 4/5 = 0.80
Electric/Ice -> 3/4 = 0.75
Grass/Ground -> 3/4 = 0.75
Ice/Flying -> 3/4 = 0.75
Ice/Bug -> 3/4 = 0.75
Psychic/Rock -> 5/7 = 0.71
Grass/Dragon -> 4/6 = 0.67
Ice/Rock -> 4/6 = 0.67
Ice/Dark -> 4/6 = 0.67
Fighting/Psychic -> 2/3 = 0.67
Psychic -> 2/3 = 0.67
Psychic/Bug -> 4/6 = 0.67
Bug/Rock -> 2/3 = 0.67
Ice/Dragon -> 3/5 = 0.60
Grass/Ice -> 4/7 = 0.57
Normal/Ice -> 2/4 = 0.50
Water/Ice -> 2/4 = 0.50
Grass/Rock -> 2/4 = 0.50
Ice/Fighting -> 3/6 = 0.50
Psychic/Dark -> 1/2 = 0.50
Ice/Ground -> 2/5 = 0.40
Ice/Psychic -> 2/6 = 0.33
Ice -> 1/4 = 0.25

Genial. Genau das, was ich wollte. Danke Kumpel!
Devin White
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.