gpt4 book ai didi

javascript - 如何将非方形二维数组旋转两次以获得所有可能的旋转?

转载 作者:搜寻专家 更新时间:2023-11-01 04:29:31 25 4
gpt4 key购买 nike

你可以找到很多关于“旋转方形二维数组”的答案,但找不到“旋转非方形二维数组”的答案,尽管有些答案确实像这样工作:

    rotate(tab) {                                                            
return tab[0].map(function(col, i) {
return tab.map(function(lig) {
return lig[i];
})
});
}

它们仅在您第一次旋转时起作用。如果你再次旋转,你会回到第一个数组,这不是我想要的,我想要一个数组旋转 90' 的所有 3 种可能组合。

最佳答案

您可以使用数组的长度来计算新位置。

original   left    right
-------- -------- --------
1 2 3 4 1 3 6
4 5 6 5 2 2 5
6 3 1 4

function rotateRight(array) {
var result = [];
array.forEach(function (a, i, aa) {
a.forEach(function (b, j, bb) {
result[bb.length - j - 1] = result[bb.length - j - 1] || [];
result[bb.length - j - 1][i] = b;
});
});
return result;
}

function rotateLeft(array) {
var result = [];
array.forEach(function (a, i, aa) {
a.forEach(function (b, j, bb) {
result[j] = result[j] || [];
result[j][aa.length - i - 1] = b;
});
});
return result;
}

var array = [[1, 2, 3], [4, 5, 6]];

console.log(rotateLeft(array));
console.log(rotateRight(array));
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 如何将非方形二维数组旋转两次以获得所有可能的旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42581128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com