Well spotted, sauoq! There are indeed bugs:
sub skeeve2 { my %count; for my $i (0..length($seq)-GROUP_LENGTH) { $count{substr($seq, $i, GROUP_LENGTH)}++; } my @keys = keys %count; foreach my $key (@keys) { for my $i (1..GROUP_LENGTH-1) { $count{substr($key, 0, $i)} += $count{$key}; } } for my $i (1..GROUP_LENGTH-1) { for my $j ($i..GROUP_LENGTH-1) { ++$count{substr($seq, -$j, $i)}; } } 1; } sub skeeve3 { my %count; $count{"$1$2"}++ while $seq =~ /(.)(?=(..))/g; my @keys = keys %count; foreach my $key (@keys) { for my $i (1..GROUP_LENGTH-1) { $count{substr($key, 0, $i)} += $count{$key}; } } for my $i (1..GROUP_LENGTH-1) { for my $j ($i..GROUP_LENGTH-1) { ++$count{substr($seq, -$j, $i)}; } } 1; } sub skeeve3_i { my %count; $count{$1}++ while $seq =~ /(?=(.{3}))/g; my @keys = keys %count; foreach my $key (@keys) { for my $i (1..GROUP_LENGTH-1) { $count{substr($key, 0, $i)} += $count{$key}; } } for my $i (1..GROUP_LENGTH-1) { for my $j ($i..GROUP_LENGTH-1) { ++$count{substr($seq, -$j, $i)}; } } 1; }
I'll fix my algorithm outlined in my other post.
Regarding your other issues:
In reply to Re^3: Question about speeding a regexp count
by Skeeve
in thread Question about speeding a regexp count
by Commander Salamander
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |