我有一个坐标,比如{ x: 1, y: 2 }和矩阵大小{ x: 5, y: 6 }。我想把那个单一的坐标旋转90度(顺时针方向)。我可以通过运行以下操作来旋转整个网格:
function rotate90(a){
// transpose from http://www.codesuck.com/2012/02/transpose-javascript-array-in-one-line.html
a = Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
// row reverse
for (i in a){
a[i] = a[i].reverse();
}
return a;
}它从以下位置获取网格:
[1][2][3][4]
[5][6][7][8]
[9][0][1][2]
[3][4][5][6]至
[3][9][5][1]
[4][0][6][2]
[5][1][7][3]
[6][2][8][4]我怎么能用一个坐标来做同样的事情呢?4x4网格上的一些例子可能是:
0, 0 -> 0, 3
0, 3 -> 3, 3
3, 3 -> 3, 0
3, 0 -> 0, 0
1, 1 -> 1, 2
1, 2 -> 2, 2
2, 2 -> 2, 1
2, 1 -> 1, 1发布于 2020-08-13 19:44:26
从MxN数组开始,(x,y) -> (y,M-x-1)
发布于 2020-08-13 19:37:54
在编写俄罗斯方块时,我在一个类的内部使用了一个旋转函数。
def rotate(self):
self.rotation = (self.rotation + 1) % len(self.figures[self.type])我有一个在矩阵中旋转的数字列表,唯一的事情是在9点之后不要到0,我继续用10。
figures = [
[[8, 9, 10, 11], [2, 6, 10, 14], [11, 10, 9, 8], [13, 9, 5, 1]], #0
[[4, 8, 9, 10], [6, 5, 9, 13], [14, 10, 9, 8], [12, 13, 9, 5]], #1
[[6, 8, 9, 10], [14, 5, 9, 13], [12, 10, 9, 8], [4, 5, 9, 13]], #2
[[5, 6, 10, 9], [5, 6, 10, 9], [5, 6, 10, 9], [5, 6, 10, 9]], #3
[[5, 6, 9, 8], [10, 14, 9, 5], [13, 12, 9, 10], [8, 4, 9, 13]], #4
[[4, 5, 9, 10], [6, 10, 9, 13], [14, 13, 9, 8], [12, 8, 9, 5]], #5
[[5, 8, 9, 10], [5, 10, 9, 13], [13, 10, 9, 8], [8, 13, 9, 5]], #6
]因为我有多个数字,所以随机选择了它们,但是你也可以控制它。
self.type = random.randint(0, len(self.figures) - 1)https://stackoverflow.com/questions/63402061
复制相似问题