Einer der Gründe, warum ich Pokemon immer geliebt habe, ist, dass es für ein so simpel wirkendes Spiel so viele Komplexitätsebenen hat. Betrachten wir den Zug Hidden Power. Im Spiel unterscheiden sich Art und Stärke (mindestens vor Generation VI) von Hidden Power für jedes Pokémon, das sie verwendet! Das ist ziemlich cool, oder? Wäre es für Sie überraschend, wenn ich Ihnen sagen würde, dass die Art und Kraft von Hidden Power nicht zufällig erzeugt wird?
In allen Pokemon-Spielen haben alle Pokemon (nicht nur die in Ihrer Gruppe, ALL POKEMON) sechs intern gespeicherte Ganzzahlen (eine für die HP-Statistik, eine für die Angriffsstatistik, eine für die Verteidigungsstatistik, eine für die Spezialangriffsstatistik, eine für den Spezialverteidigungsstatus und eine für den Geschwindigkeitsstatus, genannt ihre individuellen Werte oder IVs. Diese Werte liegen zwischen 0 und 31 und sind im Wesentlichen einer der wenigen Faktoren, die die Gesamtstatistik eines Pokemons beeinflussen. Sie bestimmen jedoch auch den Typ und die Stärke von Hidden Power!
In den Generationen III bis V (den Generationen, deren Algorithmus wir implementieren) wird der Typ der verborgenen Kraft durch die folgende Formel bestimmt (beachten Sie die Klammern, dh Sie müssen das Ergebnis abrunden):
Dabei sind a, b, c, d, e und f die niedrigstwertigen Bits von HP, Attack, Defense, Speed, Sp. Angriff und Sp. Verteidigungs-IVs. (Das am wenigsten signifikante Bit ist IV mod 2.) Die hier erzeugte Zahl kann dann unter Verwendung dieser Tabelle in den tatsächlichen Typ umgewandelt werden:
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
Für die Potenz wird eine ähnliche Formel verwendet:
Hier repräsentieren jedoch u, v, w, x, y und z das zweitniedrigste Bit von HP, Attack, Defense, Speed, Sp. Angriff und Sp. Verteidigungs-IVs (wieder in dieser Reihenfolge). (Das zweitniedrigstwertige Bit ist komplizierter als das niedrigstwertige Bit. Wenn IV mod 4 2 oder 3 ist, dann ist das Bit 1, andernfalls 0. Wenn Ihre Sprache eine Art eingebauten oder zumindest geschickteren Weg hat Um dies zu tun, sollten Sie es wahrscheinlich verwenden.)
Wie Sie wahrscheinlich bereits herausgefunden haben, besteht die Herausforderung hier darin, ein Programm zu schreiben, das sechs durch Leerzeichen getrennte Ganzzahlen über STDIN enthält, die die Werte HP, Attack, Defense, Speed, Sp. Z oo darstellen. Angriff und Sp. Verteidige IVs eines Pokemons (in dieser Reihenfolge) und gib den Typ und die Stärke der verborgenen Kraft dieses Pokemons aus.
Beispieleingabe:
30 31 31 31 30 31
Beispielausgabe:
Grass 70
Beispieleingabe:
16 18 25 13 30 22
Beispielausgabe:
Poison 61
Das ist Code-Golf, also gewinnt der kürzeste Code. Viel Glück!
(Und bevor die Leute fragen, habe ich hier den Generation V-Algorithmus verwendet, weil die Generation VI die Power-Randomisierung beseitigt und immer 60 macht. Ich halte dies nicht nur für unglaublich lahm, sondern auch für eine WENIGER INTERESSANTE Herausforderung. Also Für die Zwecke der Herausforderung führen wir ein Gen V-Spiel aus.)
Antworten:
Pyth, 110 Bytes
Dies enthält nicht druckbare Zeichen. Also hier ist ein Hexdump:
Sie können auch die Datei pokemon.pyth herunterladen und mit ausführen
python3 pyth.py pokemon.pyth
Die Eingabe wird
30, 31, 31, 31, 30, 31
gedrucktErläuterung:
quelle
Rubin, 210
Das erste Mal Golf spielen, also denke ich, dass dies eine ziemlich offensichtliche Lösung ist.
quelle
CJam,
140115 BytesBeachten Sie, dass der Code nicht druckbare Zeichen enthält.
Probieren Sie es online im CJam-Interpreter aus: Chrome | Feuerfuchs
quelle
Javascript (ES6), 251 Byte
Zumindest für den Moment ein bisschen lang. Die Typenliste und die komplexe Mathematik nehmen ungefähr den gleichen Platz ein. Ich suche nach Möglichkeiten, einen von beiden zu verkürzen.
Vorschläge sind wie immer willkommen!
quelle
Javascript (ES6), 203 Byte
Beispiel läuft:
quelle