多个数字组合

时间:2014-04-12 16:09:55

标签: perl numbers

使用Perl,如何创建范围1..20中所有可能的数字组合,其中组合可以包含一组1到15个数字的数字。

举例说明:

元素可以包含范围1..20中一次包含1个数字的所有可能组合的情况列表:

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20

元素可以包含范围1..20中一次包含2个数字的所有可能组合的情况的列表示例:

1 2, 1 3, 1 4, 1 5, ..., 2 3, 2 4, ..., 19 20

元素可以包含范围1..20中一次包含3个数字的所有可能组合的情况的列表示例:

1 2 3, 1 2 4, ..., 2 3 4, 2 3 5, ..., 18 19 20

元素可以包含范围1..20中一次包含5个数字的所有可能组合的情况的列表示例:

1 2 3 4 5, 1 2 3 4 6, ..., 2 3 4 5 6, 2 3 4 5 7, ..., 15 16 17 18 19 20

提前感谢任何建议。

1 个答案:

答案 0 :(得分:4)

您只需要Algorithm::Combinatorics

use strict;
use warnings;

use Algorithm::Combinatorics qw(combinations);

for (combinations([1..5], 3)) {
    print "@$_\n";
}

Math::Combinatorics也可以完成这项工作,但界面并不直观。但是对于大型返回集可能更好,因为它一次返回迭代器而不是所有组合。