in reply to Finding biological palindromes
Not sure if this is much better than your code:
#! perl -slw use strict; my %invert; @invert{ qw[ A C G T ] } = qw[ T G C A ]; my $in = do{ local $/; <DATA> }; chomp $in; print $in; for my $p1 ( 1 .. length( $in ) -2 ) { next unless substr( $in, $p1, 1 ) eq $invert{ substr $in, $p1+1, 1 + }; my $pals = 0; for my $p2 ( 1 .. $p1 -1 ) { last unless substr( $in, $p1-$p2, 1 ) eq $invert{ substr $in, +$p1+$p2+1, 1 }; ++$pals; } if( $pals ) { printf "%s%s at %d\n", ' 'x($p1-$pals), substr( $in, $p1-$pals, ($pals+1)*2 ), $p1-$pals; } } __DATA__ AGAGGTCAGTCTGCATCGTATCGATCGTCGACGATCGATACGATGCAGACTGACGAGAG
Produces:
[13:44:54.28] C:\test>1085446 AGAGGTCAGTCTGCATCGTATCGATCGTCGACGATCGATACGATGCAGACTGACGAGAG TGCA at 11 ATCGAT at 19 CGATCG at 21 GTCAGTCTGCATCGTATCGATCGTCGACGATCGATACGATGCAGACTGAC at 4 CGATCG at 31 ATCGAT at 33 TGCA at 43
Modify to taste :)
With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
|
---|
In Section
Seekers of Perl Wisdom