Python 如何获得矩阵中除旋转克隆之外的所有项目排列

Python 如何获得矩阵中除旋转克隆之外的所有项目排列,python,algorithm,permutation,Python,Algorithm,Permutation,我制作了一个python程序,它解决了我为我的孩子买的一个逻辑益智游戏。该程序已经运行,但给出了4个解决方案,而不是1个,并且运行速度比应该的慢4倍。之所以会出现这种情况,是因为目前它使用置换(来自itertools)来生成拼图元素的所有可能顺序,但可以对其进行优化。让我试着解释一下: 我有一个九个唯一元素的列表[a,B,C,D,E,F,G,H,I],代表矩阵3x3: A B C D E F G H I 我需要生成该列表的所有可能排列,但不包括来自旋转矩阵的克隆,因此对于上面的列表,克隆是:

我制作了一个python程序,它解决了我为我的孩子买的一个逻辑益智游戏。该程序已经运行,但给出了4个解决方案,而不是1个,并且运行速度比应该的慢4倍。之所以会出现这种情况,是因为目前它使用置换(来自itertools)来生成拼图元素的所有可能顺序,但可以对其进行优化。让我试着解释一下:

我有一个九个唯一元素的列表[a,B,C,D,E,F,G,H,I],代表矩阵3x3:

A B C
D E F
G H I 
我需要生成该列表的所有可能排列,但不包括来自旋转矩阵的克隆,因此对于上面的列表,克隆是:

[C,F,I,B,E,H,A,D,G]
[I,H,G,F,E,D,C,B,A]
[G,D,A,H,E,B,I,F,C]
因为它们表示旋转第一个矩阵得到的矩阵

C F I
B E H
A D G

I H G
F E D
C B A

G D A
H E B
I F C

是否有一些python模块可以用来生成这种可能性?或者您知道如何实现这种生成器?

您可能应该在
numpy
中将此矩阵设置为实矩阵,它的计算速度更快,包括旋转矩阵(允许您排除)以相同的方式生成它们,但是你可以简单地放弃左上角不是“最小”角的排列。@Jeffrey这是一个绝妙的主意,简单而有力,我希望我能自己解决:)谢谢!您可能应该在
numpy
中将此矩阵设置为实矩阵,它的计算速度更快,包括旋转矩阵(允许您排除)以相同的方式生成它们,但您可以简单地放弃左上角不是“最小”角的排列。@Jeffrey这是一个绝妙的想法,简单而强大,我希望我能自己弄明白:)谢谢!