如何通过javascript获取下方图像的螺旋方向数
如何通过javascript或jquery获取上面图像的螺旋方向数
请帮帮我
我希望通过螺旋方向得到2d数组的索引号
我希望得到这个数字序列
3X3 - > 0,1,2,5,8,7,6,3,4
4X5 - > 0,1,2,3,4,9,14,19,18,17,16,15,10,5,6,7,8,13,12,11
答案 0 :(得分:2)
根据您的问题,您的网格存储的形式并不清楚;我假设一个HTML表。假设您的螺旋规则是尽可能向右,然后向下,然后向左,然后向上,根据需要重复,在jQuery / JS中实现的以下(不可否认的简单)算法应该为您找到正确的路径:
$.getCellAtIndex = function (row, col) {
return $("table tr")
.filter(":nth-child(" + row + ")")
.find("td")
.filter(":nth-child(" + col + ")")
.not(".highlight")
.first();
}
$(function () {
var path = [];
var row = 1;
var col = 1;
while (true) {
var nextCell = $.getCellAtIndex(row, col);
nextCell.addClass("highlight");
path.push(nextCell);
// Move right, if possible
if ($.getCellAtIndex(row, col + 1).length > 0) {
col++;
}
// Otherwise move down
else if ($.getCellAtIndex(row + 1, col).length > 0) {
row++;
}
// Otherwise move left
else if ($.getCellAtIndex(row, col - 1).length > 0) {
col--;
}
// Otherwise move up
else if ($.getCellAtIndex(row - 1, col).length > 0) {
row--;
}
// Can't spiral anymore:
// Output path as comma-separated string
else {
$("span").text(function () {
return path.map(function (elem) {
return $(elem).text();
}).join(', ');
});
break;
}
}
});
答案 1 :(得分:1)
只需将当前x
和y
存储在变量中,并在dx
和dy
中保持“当前方向”,从(0, 0)
开始并使用方向{ {1}}。
现在算法
(1, 0)
y*width+x
无效或已经访问过,请右转x+dx, y+dy
t=dy; dy=dx; dx=-t;
并对x+=dx; y+=dy;
步骤重复此操作。
答案 2 :(得分:-1)
function a(quantity){
var arr = new Array(quantity * quantity);
var result = [];
var start = false;
for (var i = 0; i < arr.length; i++) {
var step = i % quantity;
if (step === 0) {
result.push([]);
start = !start;
}
if (start) {
result[result.length - 1].push(i + 1);
} else {
result[result.length - 1].unshift(i + 1);
}
}
return result;
}
console.log(a(3));