sfondo
Questa domanda è simile a questa . Ho fornito tutte le informazioni necessarie di seguito. Se hai familiarità con l'altra sfida, nota che stiamo classificando tutte le difese invece di vedere l'efficacia di un singolo attacco. Questo è importante perché significa che le tabelle sono inverse l'una dall'altra e l'obiettivo di questa sfida è di essere senza l'input dell'utente.
In Pokemon ci sono 18 tipi:
Normal Fighting Flying Poison Ground Rock
Bug Ghost Steel Fire Water Grass
Electric Psychic Ice Dragon Dark Fairy
I Pokemon hanno uno o due tipi univoci che li definiscono (una "combinazione di tipi"). Ad esempio, un Bulbasaur ha la combinazione di tipi Grass / Poison (ha due tipi, Grass e Poison) e un Charmander ha la combinazione di tipi Fire (con un solo tipo). L'ordine dei tipi non ha importanza (ovvero Erba / Veleno è uguale a Veleno / Erba).
Questi tipi hanno tutti i punti di forza e di debolezza:
- Un tipo può essere debole rispetto a un altro tipo. Il fuoco è debole contro l'Acqua. Ciò comporta che il fuoco ha un moltiplicatore 2 × contro l'acqua.
- Un tipo può essere resistente a un altro tipo. L'acqua è resistente all'acqua. Ciò si traduce in acqua con un moltiplicatore 0,5 × contro acqua.
- Un tipo può essere immune da un altro tipo. Volare è immune al suolo. Ciò si traduce in Flying con un moltiplicatore 0 × rispetto a Ground.
Qualsiasi altra cosa riceve un moltiplicatore 1 × standard. Normale contro Normale si tradurrebbe in un moltiplicatore 1 × ne è un esempio. Questi punti di forza e di debolezza possono anche essere aggravati o negati. Ad esempio, il Fuoco è debole per l'Acqua ma un doppio tipo di Fuoco / Acqua avrebbe un moltiplicatore di 1 × contro l'Acqua poiché la debolezza del Fuoco annullerebbe la resistenza dell'Acqua. Per una tabella completa e un'ulteriore spiegazione, vedi sotto.
Obbiettivo
L'obiettivo qui è quello di produrre un elenco di tutte le combinazioni di tipi, ordinate nell'ordine della loro abilità difensiva, e elencando il loro numero di (resistenze + immunità), debolezze e il rapporto tra quelli. In particolare, l'ordinamento è il seguente: le combinazioni di tipi con il miglior rapporto tra (resistenze + immunità) e le debolezze sono elencate per prime, e se c'è un pareggio, le combinazioni di tipi con più resistenze e immunità vinceranno il tiebreak. Puoi produrre questo elenco con qualsiasi mezzo (un metodo ovvio è quello di fare un calcolo dell'efficacia del tipo rispetto a ciascuna combinazione di tipi, ma ti è permesso memorizzare nel tuo programma output precalcolati o parzialmente precalcolati se ciò lo renderebbe più breve.)
Digitare la tabella di efficacia
Per una tabella leggibile dall'uomo, vedi il database Pokemon. Nota: le colonne di questo elenco sono ciò che stiamo prendendo in considerazione. Ma per ogni evenienza, ecco il tavolo a cui sto pensando in una matrice compressa di efficacia computerizzata. Ho moltiplicato ogni valore per 2, quindi non abbiamo a che fare con fastidiosi decimali:
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
Esempio
Se questo problema avesse richiesto un output solo per combinazioni di tipo singolo, un output valido sarebbe simile al seguente:
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
Tuttavia, il tuo programma dovrà anche elencare tutte le combinazioni di doppio tipo nell'output, quindi il suo output sarà considerevolmente più lungo.
Buona fortuna! Vince il codice più breve in byte.