使用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
提前感谢任何建议。
答案 0 :(得分:4)
use strict;
use warnings;
use Algorithm::Combinatorics qw(combinations);
for (combinations([1..5], 3)) {
print "@$_\n";
}
Math::Combinatorics
也可以完成这项工作,但界面并不直观。但是对于大型返回集可能更好,因为它一次返回迭代器而不是所有组合。