首页 > 技术文章 > perl实现全组合的一种算法

yumtaoist 2014-03-03 21:43 原文

如果用四种碱基生成密码子表,用三个循环就够了。但是如果要生成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\n";
}

 

推荐阅读