我想在Perl中进行置换。例如,我有三个数组:["big", "tiny", "small"]
,然后有["red", "yellow", "green"]
和["apple", "pear", "banana"]
。
如何得到:
[“大”,“红色”,“苹果”]
[“大”,“红色”,“梨”]
..等等..
[“小”,“绿色”,“香蕉”]
我了解这称为置换。但是我不确定该怎么做。我也不知道我可以有多少个数组。可能有三四个,所以我不想做嵌套循环。
最佳答案
实际上,这不是排列,而是Cartesian product。请参见Math::Cartesian::Product。
#!/usr/bin/perl
use strict; use warnings;
use Math::Cartesian::Product;
cartesian { print "@_\n" }
["big", "tiny", "small"],
["red", "yellow", "green"],
["apple", "pear", "banana"];
输出:
C:\ Temp> uu
大红苹果
大红梨
大红色香蕉
大黄苹果
大黄梨
大黄香蕉
大青苹果
大绿梨
大绿色香蕉
小小的红苹果
小小的红梨
小小的红色香蕉
小小的黄色苹果
小黄梨
小小的黄色香蕉
小小的青苹果
小小的绿色梨
小小的绿色香蕉
小红苹果
小红梨
小红香蕉
小黄苹果
小黄梨
小黄香蕉
小青苹果
小绿梨
小绿色香蕉