为了代码的简洁性,这里不使用严格模式了
function rotateRect(index) {
var arr = [], f = 0;
for (var i = 0; i < index; ++i) {
arr.push([]);
arr[i].length = index;
}
return index & 1 ? (function (f, arr, index) {
if (index <= f)
return arr;
for (var j = 0; j < index - f; j++)
arr[index - 1][index - 1 - j] = (index - f) * (index - f) - j;
for (var i = 0; i < index - f; i++)
arr[index - 1 - i][f] = (index - f) * (index - f) - (index - f) + 1 - i;
for (j = f; j < index; j++)
arr[f][j] = (index - f) * (index - f) - ((index - f) - 1) * 2 - j + f;
for (i = f; i < index - 1; i++)
arr[i][index - 1] = (index - f) * (index - f) - ((index - f) - 1) * 3 - i + f;
return arguments.callee(f + 1, arr, index - 1);
})(f, arr, index) : (function (f, arr, index) {
if (index <= f)
return arr;
for (var j = f; j < index; j++)
arr[f][j] = (index - f) * (index - f) - j + f;
for (var i = f; i < index; i++)
arr[i][index - 1] = (index - f) * (index - f) - (index - f) + 1 - i + f;
for (j = 0; j < index - f; j++)
arr[index - 1][index - 1 - j] = (index - f) * (index - f) - ((index - f) - 1) * 2 - j;
for (i = 0; i < index - 1 - f; i++)
arr[index - 1 - i][f] = (index - f) * (index - f) - ((index - f) - 1) * 3 - i;
return arguments.callee(f + 1, arr, index - 1);
})(f, arr, index)
}
例如输入10,得到: