私がいつもポケモンを愛してきた理由の1つは、そのような単純に見えるゲームのために、非常に多くの複雑さの層があるためです。隠された力の動きを考えてみましょう。ゲームでは、隠されたパワーのタイプとパワー(少なくともジェネレーションVIの前)は、それを使用するポケモンごとに異なります!それはかなりクールですよね?さて、隠し力の種類と力はランダムに生成されないと言ったら驚かれますか?
すべてのポケモンゲームでは、すべてのポケモン(パーティの1つだけでなく、すべてのポケモン)には6つの内部に格納された整数があります(1つはHP統計、1つは攻撃統計、1つは防御統計、1つは特別な攻撃統計、 1つは特別な防御の統計用で、もう1つは速度の統計用))個々の値、またはIV と呼ばれます。これらの値の範囲は0から31であり、基本的にポケモンの全体的な統計に影響を与えるいくつかの要因の1つです。ただし、Hidden Powerのタイプとパワーも決定します!
Generation IIIからV(アルゴリズムを実装する世代)では、Hidden Powerのタイプは次の式で決定されます(フロアブラケットに注意してください。つまり、結果を切り捨てる必要があります)。
ここで、a、b、c、d、e、およびfは、HP、攻撃、防御、速度、Spの最下位ビットです。攻撃、およびSp。それぞれ防衛IV。(最下位ビットはIV mod 2です。)ここで生成された数値は、このチャートを使用して実際のタイプに変換できます。
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
電力については、同様の式が使用されます。
ただし、ここで、u、v、w、x、y、およびzは、HPの2番目に重要度の低いビット、Attack、Defense、Speed、Spを表します。攻撃とSp 防衛IV(再びこの順序で)。(2番目の最下位ビットは最下位ビットよりも複雑です。IVmod 4が2または3の場合、ビットは1です。それ以外の場合は0です。言語に何らかの組み込みまたは少なくともより賢い方法がある場合これを行うには、おそらくそれを使用する必要があります。)
既におわかりのように、ここでの課題は、HP、攻撃、防御、速度、Spを表すSTDINを介してスペースで区切られた6つの整数を取り込むプログラムを作成することです。攻撃とSp ポケモンの防御IV(この順序で)およびそのポケモンの隠された力のタイプと力を出力します。
サンプル入力:
30 31 31 31 30 31
サンプル出力:
Grass 70
サンプル入力:
16 18 25 13 30 22
サンプル出力:
Poison 61
これはコードゴルフなので、最短のコードが優先されます。幸運を!
(そして、人々が尋ねる前に、Generation VIはパワーランダム化を取り除き、常に60にするため、ここでGeneration Vアルゴリズムを使用しました。チャレンジのために、Gen Vゲームを実行しています。)