【发布时间】:2011-10-16 06:02:29
【问题描述】:
假设我们有一个包含单元格的网格,并且我们想要返回两个数组,其中每个数组包含与该单元格对角线中的所有单元格,从左上到右下以及相反的一个。最好的方法是什么?
我在 javascript 中尝试了以下操作(请注意,board 是一个一维数组,据说它代表一个边长为boardSize 的方形网格。position 是我试图找到它的对角线的单元格。 )
var diagonal1 = [];
var diagonal2 = [];
for(var i = 0; i < board.length; i++) {
if (i == position) diagonal.move_index = diagonal.length
if (Math.abs(position - i) % (boardSize + 1) == 0) {
diagonal1.push(board[i]);
}
else if (Math.abs(position - i) % (boardSize - 1) == 0) {
diagonal2.push(board[i]);
}
}
但这仅适用于位于主对角线上的元素,而不适用于其他元素。有什么想法吗?
例子:
if board = [1,2,3,4,5,6,7,8]
board:
1 2 3
4 5 6
7 8 9
then If I say that I want to find the diagonals for position = 4
I should get:
diagonal1 = [4, 8]
diagonal2 = [2, 4]
and if I choose another position, lets say position = 5, then:
diagonal1 = [1, 3, 5]
diagonal2 = [3, 5, 7]
【问题讨论】:
-
问题描述不清楚,示例代码中有错误,如不明显的未定义变量
diagonal和position,以及grid的def没有显示。将示例代码重写为一个包含所有定义的过程,或者作为一个完整的程序,并实际说出“完成工作”的含义。
标签: javascript arrays algorithm