我一直喜欢Pokemon的原因之一是因为对于一款简单的游戏,它具有如此多的复杂性。让我们考虑一下“隐藏力量”。在游戏中,每个使用它的口袋妖怪的隐藏力量的类型和力量(至少在第六代之前)都不一样!太酷了吧?现在,如果我告诉您“隐秘力量”的类型和力量不是随机产生的,您会感到惊讶吗?
在所有口袋妖怪游戏中,所有口袋妖怪(不仅仅是派对中的一个,所有口袋妖怪)都有六个内部存储的整数(一个用于HP状态,一个用于攻击状态,一个用于防御状态,一个用于特殊攻击状态,一种用于特殊防御统计,另一种用于速度统计),称为各自的值或IV。这些值在0到31之间,并且本质上是影响口袋妖怪总体属性的几个因素之一。但是,它们还可以确定“隐藏电源”的类型和电源!
在第三代到第五代(我们将要实现其算法的几代)中,隐藏功率的类型由以下公式确定(注意方括号,这意味着您需要舍入结果):
其中a,b,c,d,e和f是HP,攻击,防御,速度Sp的最低有效位。攻击和Sp。防御四。(最低有效位是IV mod2。)然后可以使用此图表将此处产生的数字转换为实际类型:
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,攻击,防御,速度Sp的第二个最低有效位。攻击和Sp。防御IV(再次按此顺序)。(第二最低有效位比最低有效位要复杂。如果IV mod 4为2或3,则该位为1,否则为0。如果您的语言具有某种内置的或至少更聪明的方式,为此,您可能应该使用它。)
因此,您可能已经知道,这里的挑战是编写一个程序,该程序通过STDIN接受六个以空格分隔的整数,分别代表HP,攻击,防御,速度,Sp。攻击和Sp。宠物小精灵的防御IV(按顺序),并输出该宠物小精灵的“隐藏力量”的类型和力量。
输入样例:
30 31 31 31 30 31
样本输出:
Grass 70
输入样例:
16 18 25 13 30 22
样本输出:
Poison 61
这是代码高尔夫球,因此最短的代码获胜。祝好运!
(在人们问之前,我在这里使用了V代算法,因为VI摆脱了功率随机化,并使其始终为60。为了应对挑战,我们正在运行第五代游戏。)