Q:用0-9填充一个N*N的矩阵,该矩阵按顺时针旋转方向依次增大,用js编程输出这个数组。要求如下:
[0, 1, 2, 3, 4]
[5, 6, 7, 8, 5]
[4, 3, 4, 9, 6]
[3, 2, 1, 0, 7]
[2, 1, 0, 9, 8]我的思路先生成一个一维的数组;
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4]
//这里实现的算法是通过略微修改了d3.range();
function range_(start, stop, step) {
if (arguments.length < 3) {
step = 1;
if (arguments.length < 2) {
stop = start;
start = 0;
}
}
if ((stop - start) / step === Infinity) throw new Error("infinite range");
var range = [],
k = range_integerScale(Math.abs(step)),
i = -1,
j;
start *= k, stop *= k, step *= k;
if (step < 0)
while ((j = start + step * ++i) > stop) range.push(range_interger_10(j / k));
else
while ((j = start + step * ++i) < stop) range.push(range_interger_10(j / k));
return range;
};
function range_integerScale(x) {
var k = 1;
while (x * k % 1) k *= 10;
return k;
}
function range_interger_10(a) {
a = a >= 10 ? range_interger_10(a % 10) : a;
return a;
}</