使用Perl生成组合
我需要编写一个Perl例程来生成给定集合的n-choose-k组合。我不需要计算有多少套,我必须能够打印出来。我被难住了 任何建议都将不胜感激使用Perl生成组合,perl,combinatorics,Perl,Combinatorics,我需要编写一个Perl例程来生成给定集合的n-choose-k组合。我不需要计算有多少套,我必须能够打印出来。我被难住了 任何建议都将不胜感激 关于。如果您想要不重复的组合,您可以生成长度为k的所有二进制数,选择具有n 1的二进制数,并按固定顺序将其应用于集合:0表示未选择,1表示已选择。要获取二进制数,请使用sprintf“%05b”;要计算1的使用情况,有一个名为“计算1”的模块,它可以产生组合(nCr)、排列(nPr)和你提供给它的任何一组事物的混乱状态。这看起来令人鼓舞!你能给我举一个如
关于。如果您想要不重复的组合,您可以生成长度为k的所有二进制数,选择具有n 1的二进制数,并按固定顺序将其应用于集合:0表示未选择,1表示已选择。要获取二进制数,请使用sprintf“%05b”;要计算1的使用情况,有一个名为“计算1”的模块,它可以产生组合(nCr)、排列(nPr)和你提供给它的任何一组事物的混乱状态。这看起来令人鼓舞!你能给我举一个如何使用
sprintf“%05b”
和tr/1/
的例子吗?它们对我来说都是新的。@Schemer:请参阅和的文档sprintf
格式化字符串,%05b
是一个带前导零的5位二进制数tr
替换字符并返回替换或删除的字符数,因此tr/1/
删除所有1
字符并给出它们的计数。好的,我通过谷歌搜索找到了sprintf。但是我找不到任何引用tr/1//
,tr/1//
不会删除任何内容,除非您说tr/1//d
。引用佩罗普的话:“如果REPLACEMENTLIST为空,搜索列表将被复制。”@mob:是的,没有任何内容被删除,但仍然计算在内。对不起,我忘了提到我正在工作的机器上没有安装该模块,我自己也无法安装。@Schemer=>该模块不使用XS,并且没有任何非核心依赖项,所以你当然可以使用它。查看如何安装。即使无法安装,也可以查看源代码。