你在一家开发在线奇幻生存游戏的公司工作。
玩家每完成一个关卡,就会获得能量点。 获得多少能量点,取决于玩家在探索该关卡时找到了哪些魔法物品。
你的任务是编写代码,计算玩家完成一个关卡时获得的能量点。
获得的点数取决于两件事:
能量点按以下规则发放:
来看一个例子:
玩家完成了第 20 关,并找到了两件基础值分别为 3 和 5 的魔法物品。
要计算玩家获得的能量点,我们需要找出所有小于第 20 关、且是这两个基础值的倍数的不重复数字。
{3, 6, 9, 12, 15, 18}
{5, 10, 15}
{3, 5, 6, 9, 10, 12, 15, 18}
3 + 5 + 6 + 9 + 10 + 12 + 15 + 18 = 78
这个练习的诀窍在于理解如何遍历一个数字范围,以及如何检查一个 Collection 中是否有能被某个数字整除的倍数。 试着使用 Spotter 查找可能用到的类,并浏览这些类中方法的类别。
还要记住,Pharo 环境有大量的交叉引用。 你可以右键点击任何类或方法,浏览某个类的“references”(看看它可能是如何创建的),以及某个方法的“senders”(看看它可能是如何使用的)。