通常,您会得到一个由0到8组成的非进制(基数9)非负整数。但是,此数字中的位数(没有前导零)是一个完美的正方形。
因此,可以将数字排列在正方形网格中(仍保留读取顺序)。
1480(1125以10为基)的示例:
14
80
现在,让这样的一元网格中的每个数字指示运动到另一个网格空间(具有周期性边界条件):
432
501
678
就是说
0 = stay still
1 = move right
2 = move right and up
3 = move up
...
8 = move right and down
因此,如果在1480网格中从4开始,然后向上移动(记住pbc)并向左移动到8,这意味着您将向右和向下移动回到4,从周期2开始一个循环。
通常,此过程一直持续到您达到0或注意到一个循环为止。(0被认为是周期为1的周期。)
在1480的情况下,最终到达4个起始数字中的每个数字的时间段2 2 2 1
分别是。
对于更大的网格,这些数字可能大于8,但是我们仍然可以将它们用作新的非二进制数字中的“数字”(简单地将9 ^ n的系数视为数字):
2*9^3 + 2*9^2 + 2*9 + 1 = 1639 (base 10) = 2221 (base 9)
我们将其称为原始一元数的强度。因此1480的强度为1639(以10为基数)或2221(以9为基数)。
挑战
编写最短的程序,告诉一个非整数的强度是大于,小于还是等于非整数本身。(您不一定需要计算强度。)
输入将是一个非负一元数字,该数字包含一个平方的数字(除了0本身的特殊情况外,没有前导零)。它应该来自命令行或标准输入。
输出应以以下方式进入标准输出:
G if the strength is larger than the original number (example: 1480 -> strength = 2221)
E if the strength is equal to the original number (example: 1 -> strength = 1)
L if the strength is less than the original number (example: 5 -> strength = 1)
有趣的奖金挑战:
您能找到的最高输入等于其强度?(有限制吗?)