perl实现全组合的一种算法

如果用四种碱基生成密码子表,用三个循环就够了。但是如果要生成7个motif的全组合表,甚至生成kmer,手动写组合就不够现实。下面是利用hash实现全组合的一种算法。

my %dict_motif;
my @element=("A","T","C","G");
for(my $i=0;$i<7;$i++){
    if($i==0){
        foreach my $base(@element){
            $dict_motif{$base}=1;
        }
    }
    else {
        foreach my $old(keys %dict_motif){
            foreach my $base(@element){
        my $new=$old.$base;
        $dict_motif{$new}=1;
            }
            delete $dict_motif{$old};
        }
    }
}

foreach my $motif(sort keys %dict_motif){
    print "$motif
";
}
原文地址:https://www.cnblogs.com/yumtaoist/p/3579278.html