挑战
给定n
整数维数组和第一个n
自然数的排列,请相应地排列数组维。
细节
这一挑战是受MATLAB启发的permute
。演示
排列以整数列表形式给出,例如,[1,3,2]
表示1映射到1,将2映射到3,将3映射到2(此处,i
第th个条目是i
映射到的值)。但是您可以使用其他方便的格式,例如作为循环或函数。如果更方便,也可以使用基于0的索引。
可以假定该数组是完整的“矩形”数组m1 x m2 x ... x mn
(即,您可以假定它不是锯齿状的)。
您可以假设该n
值不太大,因为许多语言对嵌套数组中的维数都有限制。
如果您的语言不支持多维数组,则也可以将代表数组的字符串作为输入。
例子
- 任何
n
与身份置换维数组[1,2,3,...,n]
将保持不变。 [[10,20,30],[40,50,60]]
具有排列的数组[2,1]
将映射到[[10,40],[20,50],[30,60]]
。[[[1,2],[3,4]],[[5,6],[7,8]]]
具有排列的数组[2,3,1]
将映射到[[[1,3],[5,7]],[[2,4],[6,8]]]
。
exec
(节省两个字节),因为它是在Python 2的声明