Antecedentes
Esta pregunta es similar a esta . He proporcionado toda la información necesaria a continuación. Si está familiarizado con el otro desafío, tenga en cuenta que estamos clasificando todas las defensas en lugar de ver la efectividad de un solo ataque. Esto es importante porque significa que las tablas son inversas entre sí y el objetivo de este desafío es estar sin la participación del usuario.
En Pokemon hay 18 tipos:
Normal Fighting Flying Poison Ground Rock
Bug Ghost Steel Fire Water Grass
Electric Psychic Ice Dragon Dark Fairy
Los Pokémon tienen uno o dos tipos únicos que los definen (una "combinación de tipos"). Por ejemplo, un Bulbasaur tiene la combinación de tipo Hierba / Veneno (tiene dos tipos, Hierba y Veneno) y un Charmander tiene la combinación de tipo Fuego (que tiene un solo tipo). El orden de los tipos no importa (es decir, Grass / Poison es el mismo que Poison / Grass).
Todos estos tipos tienen fortalezas y debilidades:
- Un tipo puede ser débil a otro tipo. El fuego es débil contra el agua. Esto da como resultado que Fire tenga un multiplicador 2 × contra el agua.
- Un tipo puede ser resistente a otro tipo. El agua es resistente al agua. Esto da como resultado que el Agua tenga un multiplicador 0.5 × contra el Agua.
- Un tipo puede ser inmune a otro tipo. Volar es inmune a la tierra. Esto hace que Flying tenga un multiplicador 0 × contra Ground.
Cualquier otra cosa recibe un multiplicador estándar 1 ×. Normal contra Normal daría como resultado un multiplicador 1 × es un ejemplo de esto. Estas fortalezas y debilidades se pueden agravar o negar también. Por ejemplo, el Fuego es débil para el Agua, pero un tipo dual Fuego / Agua tendría un multiplicador 1 × contra el Agua ya que la debilidad del Fuego anularía la resistencia del Agua. Para obtener una tabla completa y una explicación más detallada, consulte a continuación.
Objetivo
El objetivo aquí es generar una lista de todas las combinaciones de tipos, ordenadas en el orden de su capacidad defensiva, y enumerar sus números de (resistencias + inmunidades), debilidades y la relación entre ellas. Específicamente, el orden de clasificación es el siguiente: las combinaciones de tipos con la mejor proporción de (resistencias + inmunidades) a debilidades se enumeran primero, y si hay un empate, las combinaciones de tipo con la mayor cantidad de resistencias e inmunidades ganarán el desempate. Puede generar esta lista por cualquier medio (un método obvio es hacer un cálculo de efectividad de tipo para cada combinación de tipos, pero se le permite almacenar resultados precalculados o parcialmente precalculados en su programa si hacerlo lo acortara).
Tabla de efectividad de tipos
Para una tabla legible por humanos, mira la base de datos Pokemon. Nota: las columnas de esta lista son lo que estamos considerando. Pero por si acaso, aquí está la tabla en la que estoy pensando en una matriz comprimida de efectividad para computadora. He multiplicado cada valor por 2 para que no tengamos que lidiar con decimales molestos:
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
Ejemplo
Si este problema hubiera solicitado solo la salida para combinaciones de tipo de tipo único, una salida válida se vería así:
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
Sin embargo, su programa también necesitará enumerar todas las combinaciones de tipo dual en la salida, por lo que su salida será considerablemente más larga.
¡La mejor de las suertes! El código más corto en bytes gana.