diff options
| author | drbaggy <js5@sanger.ac.uk> | 2021-02-12 09:37:50 +0000 |
|---|---|---|
| committer | drbaggy <js5@sanger.ac.uk> | 2021-02-12 09:37:50 +0000 |
| commit | ff53a9f766cbfd9f8026da1122cf475993f1e004 (patch) | |
| tree | 585db4910cd38f089305143d77a1b8fe763dfeb3 /challenge-099/james-smith | |
| parent | b6564e584726b76c7e107ef42b96ad94a0bd10e3 (diff) | |
| download | perlweeklychallenge-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.pl | 11 |
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; } |
