perl - 在 Perl 中,如何获得多个集合的笛卡尔积?

标签 perl cartesian-product cross-product list-manipulation

我想在 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
大红苹果
大红梨
大红香蕉
大黄苹果
大黄梨
大黄香蕉
大青苹果
大绿梨
大绿香蕉
小红苹果
小红梨
小红香蕉
小黄苹果
小黄梨
小黄香蕉
小青苹果
小绿梨
小绿香蕉
小红苹果
小红梨
小红香蕉
小黄苹果
小黄梨
小黄香蕉
小青苹果
小绿梨
小绿香蕉

关于perl - 在 Perl 中,如何获得多个集合的笛卡尔积?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2457096/

相关文章:

perl - 如何在实际负载下重播从日志到配置文件/基准Web应用程序到Web服务器的流量?

perl - 如何使用 Perl 修剪字符串的最后部分?

python - 分解字典 - 获取字典中值的所有组合

iterator - 如何创建笛卡尔积

r - 生成独特的用户-项目跨产品组合矩阵

scala - Scala 中的叉积

regex - 查找文件中的数字并使用 perl 更改其值

perl - 我如何使用 Net::Server 在 Perl 中编写一个简单的聊天服务器?