信息
数字1到9分别代表摩尔定居区中的一个单元,其中5为中心单元。所以:
123
456
789
1={-1,-1} 2={-1, 0} 3={-1, 1}
4={ 0,-1} 5={ 0, 0} 6={ 0, 1}
7={ 1,-1} 8={ 1, 0} 9={ 1, 1}
挑战
您可以通过STDIN,ARGV或函数参数获取输入,然后返回结果或将其打印到STDOUT。输入是一个N x N网格(环形拓扑,意味着如果x或y <1则x或y = N,如果x或y> N则x或y = 1),并且您的程序必须输出一个通过将每个单元格替换为其摩尔邻域单元格中的值来建立网格。
输入网格示例(2 x 2):
13
79
输出:
97
31
说明:
从位置1,1开始,我们拥有值1,因为值1 = {-1,-1}我们必须获取1 +(-1),1 +(-1)= 0,0。并且由于它是圆环0,0,所以我们将其环绕到N。因此,我们在位置1,1(1)处检索单元格值,并在位置2,2(9)处检索单元格值。
对于下一个单元格1,2,我们的值为3(= -1,1),所以1 +(-1),2 +(1)= 0.3。环绕到2,1,即值7。
在2,1处的下一个单元格值为7(= 1,-1),因此2+(1),1 +(-1)= 3,0。环绕到1,2,即值3。
在2,2处的下一个像元值为9(= 1,1),因此2+(1),2 +(1)= 3,3。环绕到1,1,即值1。
更多例子
输入网格(3 x 3):
123
456
789
预期产量:
987
654
321
输入网格(5 x 5):
77497
81982
32236
96336
67811
预期产量:
28728
37337
11923
73369
77433
最后说明
如有任何疑问,请随时发表评论。这是一场代码挑战赛,最短的代码胜出!
您如何定义元素的位置?我不明白如何为输入单元格建立索引。
—
Rainbolt 2014年
@Rainbolt输入是按行索引,然后按列索引。因此,在2,3在最后一个例子(输入)细胞值为9行2 = 81982,和第三列是9
—
AndoDaan
忍不住阅读了“摩尔实例”。
—
tomsmeding