diff options
| author | Niels van Dijke <perlboy@cpan.org> | 2022-02-06 20:33:22 +0000 |
|---|---|---|
| committer | Niels van Dijke <perlboy@cpan.org> | 2022-02-06 20:33:22 +0000 |
| commit | 9447be663d424bc49bf511468d3188c90bf3978a (patch) | |
| tree | 9b4459ca9c29b86041d203906b1227d3be244f15 /challenge-150 | |
| parent | c78c1da46f30d3bd3088822925ab25b2e6ffe02d (diff) | |
| download | perlweeklychallenge-club-9447be663d424bc49bf511468d3188c90bf3978a.tar.gz perlweeklychallenge-club-9447be663d424bc49bf511468d3188c90bf3978a.tar.bz2 perlweeklychallenge-club-9447be663d424bc49bf511468d3188c90bf3978a.zip | |
Task 1 - Correction - Multi entrance version
Diffstat (limited to 'challenge-150')
| -rwxr-xr-x | challenge-150/perlboy1967/perl/ch-1.pl | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/challenge-150/perlboy1967/perl/ch-1.pl b/challenge-150/perlboy1967/perl/ch-1.pl index 914cb47a49..736c61559c 100755 --- a/challenge-150/perlboy1967/perl/ch-1.pl +++ b/challenge-150/perlboy1967/perl/ch-1.pl @@ -22,6 +22,8 @@ use v5.16; use strict; use constant LEN => 51; +use Data::Printer; + # Prototype sub fibStr ($$$); @@ -38,10 +40,16 @@ printf "The %dth digit in the first having at least 51 digits '%s' is '%s'\n", sub fibStr ($$$) { my ($s1, $s2, $n) = @_; - state $s = [$s1, $s2]; + my $k = "$s1:$s2"; + + state $s = {}; + $s->{$k} //= [$s1, $s2]; + + my $r = $s->{$k}; - $s->[@$s] = $s->[@$s-2] . $s->[@$s-1] while (@$s < $n); + $r->[@$r] = $r->[@$r-2] . $r->[@$r-1] + while (@$r < $n); - return $s->[$n-1] + return $r->[$n-1] } |
