aboutsummaryrefslogtreecommitdiff
path: root/challenge-099/james-smith
diff options
context:
space:
mode:
authordrbaggy <js5@sanger.ac.uk>2021-02-12 09:37:50 +0000
committerdrbaggy <js5@sanger.ac.uk>2021-02-12 09:37:50 +0000
commitff53a9f766cbfd9f8026da1122cf475993f1e004 (patch)
tree585db4910cd38f089305143d77a1b8fe763dfeb3 /challenge-099/james-smith
parentb6564e584726b76c7e107ef42b96ad94a0bd10e3 (diff)
downloadperlweeklychallenge-club-ff53a9f766cbfd9f8026da1122cf475993f1e004.tar.gz
perlweeklychallenge-club-ff53a9f766cbfd9f8026da1122cf475993f1e004.tar.bz2
perlweeklychallenge-club-ff53a9f766cbfd9f8026da1122cf475993f1e004.zip
tidied up script
Diffstat (limited to 'challenge-099/james-smith')
-rw-r--r--challenge-099/james-smith/perl/ch-2.pl11
1 files changed, 4 insertions, 7 deletions
diff --git a/challenge-099/james-smith/perl/ch-2.pl b/challenge-099/james-smith/perl/ch-2.pl
index d0a3231645..cd9531a4fd 100644
--- a/challenge-099/james-smith/perl/ch-2.pl
+++ b/challenge-099/james-smith/perl/ch-2.pl
@@ -35,10 +35,9 @@ is( uniq_subseq_cache('abcabcabcabcabcabcabcabcabc','abc'),165 );
done_testing();
sub uniq_subseq {
- my( $str, $sub ) = @_;
+ my( $res, $str, $sub ) = ( 0, @_ );
my $f = substr $sub, 0, 1, q();
return scalar @{[ $str =~ m{$f}g ]} if $sub eq q();
- my $res = 0;
$res += uniq_subseq( $str, $sub ) while $str=~s{.*?$f}{};
return $res;
}
@@ -65,13 +64,11 @@ sub display_uniq_subseq {
}
sub uniq_subseq_cache {
- my( $str, $sub ) = @_;
- my $k = "$str-$sub";
- return $c->{$k} if exists $c->{$k};
+ my( $res, $k, $str, $sub ) = ( 0, "$_[0]-$_[1]", @_ );
my $f = substr $sub, 0, 1, q();
+ return $c->{$k} if exists $c->{$k};
return $c->{$k} = scalar @{[ $str =~ m{$f}g ]} if $sub eq q();
- my $res = 0;
- $res += uniq_subseq( $str, $sub ) while $str=~s{.*?$f}{};
+ $res += uniq_subseq_cache( $str, $sub ) while $str=~s{.*?$f}{};
return $c->{$k} = $res;
}