Uno dei motivi per cui ho sempre adorato Pokemon è perché per un gioco così semplice sembra avere così tanti livelli di complessità. Consideriamo la mossa Hidden Power. Nel gioco, il tipo e il potere (almeno prima della generazione VI) di Hidden Power è diverso per ogni Pokemon che lo usa! È abbastanza bello, vero? Ora, saresti sorpreso se ti dicessi che il tipo e il potere di Hidden Power non sono generati casualmente?
In tutti i giochi Pokemon, tutti i Pokemon (non solo quelli del tuo gruppo, TUTTO POKEMON) hanno sei numeri interi memorizzati internamente (uno per la statistica HP, uno per la statistica di attacco, uno per la statistica di difesa, uno per la statistica di attacco speciale, uno per la stat di difesa speciale e uno per la stat di velocità) chiamato i loro valori individuali, o IV. Questi valori sono compresi tra 0 e 31 e sono essenzialmente uno dei pochi fattori che influenzano le statistiche complessive di un Pokemon. TUTTAVIA, determinano anche il tipo e la potenza del potere nascosto!
Nella terza generazione a V (le generazioni di cui implementeremo l'algoritmo), il tipo di potenza nascosta è determinato dalla seguente formula (notare le parentesi quadre, il che significa che è necessario arrotondare per difetto il risultato):
dove a, b, c, d, e e f sono i bit meno significativi di HP, Attacco, Difesa, Velocità, Sp. Attack e Sp. Difesa IV rispettivamente. (Il bit meno significativo è IV mod 2.) Il numero prodotto qui può essere convertito nel tipo reale usando questo grafico:
0 Fighting
1 Flying
2 Poison
3 Ground
4 Rock
5 Bug
6 Ghost
7 Steel
8 Fire
9 Water
10 Grass
11 Electric
12 Psychic
13 Ice
14 Dragon
15 Dark
Per il potere, viene utilizzata una formula simile:
Qui, tuttavia, u, v, w, x, y e z rappresentano il secondo bit meno significativo di HP, Attacco, Difesa, Velocità, Sp. Attack and Sp. Difesa IV (di nuovo in quell'ordine). (Il secondo bit meno significativo è più complicato del bit meno significativo. Se IV mod 4 è 2 o 3, allora il bit è 1, altrimenti è 0. Se la tua lingua ha una sorta di built-in o almeno un modo più intelligente per fare questo, probabilmente dovresti usarlo.)
Quindi, come probabilmente hai già capito, la sfida qui è scrivere un programma che comprenda sei numeri interi separati da spazi tramite STDIN che rappresentano HP, Attack, Defense, Speed, Sp. Attack and Sp. Difesa IV di un Pokemon (in quell'ordine) e produzione del tipo e del potere di quel potere nascosto di quel Pokemon.
Input di esempio:
30 31 31 31 30 31
Uscita campione:
Grass 70
Input di esempio:
16 18 25 13 30 22
Uscita campione:
Poison 61
Questo è code-golf, quindi vince il codice più corto. In bocca al lupo!
(E prima che le persone chiedano, ho usato l'algoritmo di generazione V qui perché la generazione VI elimina la randomizzazione della potenza e la rende sempre 60. Non solo penso che sia incredibilmente zoppo, penso che rende la sfida MOLTO MOLTO INTERESSANTE. Quindi ai fini della sfida, stiamo eseguendo un gioco di generazione V.)