【问题标题】:In Perl , How to generate All Possible Patterns ,在 Perl 中,如何生成所有可能的模式,
【发布时间】:2021-01-29 06:09:15
【问题描述】:

我可以知道如何(在 Perl 中), 在文件和屏幕输出中的所有可能模式下方生成,并且模式中的每个插槽都可以访问,?!

非常感谢大家,

输入值,

1 ,不。插槽数,

2 ,不。对象,

例如,

没有。对象 = 2 , { a , b } ,

没有。插槽数 = 4,

然后,输出,

没有。所有可能的模式 = 2^4 = 16,

那么,

第 16 行,

第 8 列,

eachSlot[i][j] = 允许分配或更改其值,

那么,输出格式是这样的,

啊啊啊啊

a a a b

a a b a

a a b b

a b a a

a b a b

a b b a

a b b b

b a a a

b a b

b a b a

b a b b

b b a a

b b a b

b b b a

b b b b

和,

如果看到 'a' ,然后做某事 actionX ,

如果看到'b',那么做某事,

非常感谢所有的建议和帮助,

【问题讨论】:

标签: perl combinations


【解决方案1】:
use Algorithm::Loops qw( NestedLoops );

my @syms = qw( a b );
my $num_slots = 4;

my $iter = NestedLoops([ ( \@syms ) x $num_slots ]);
while ( my @items = $iter->() ) {
   say "@items";
}

【讨论】:

    【解决方案2】:

    我发了Set::CrossProduct

    use v5.10;
    
    use Set::CrossProduct;
    
    my $set = Set::CrossProduct->new( [ [ qw(a b) ] x 4 ] );
    
    while( my $next = $set->get ) {
        say "@$next";
        }
    

    ikegami 展示了 Algorithm::Loops 模块,它也可以得到所有的组合。

    【讨论】:

    • 哇,不知道[]x 工作起来像()x
    • 我也没有:)
    猜你喜欢
    • 2012-05-05
    • 1970-01-01
    • 2019-06-26
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 2022-01-24
    相关资源
    最近更新 更多