aboutsummaryrefslogtreecommitdiff
path: root/challenge-150
diff options
context:
space:
mode:
authorNiels van Dijke <perlboy@cpan.org>2022-02-06 20:33:22 +0000
committerNiels van Dijke <perlboy@cpan.org>2022-02-06 20:33:22 +0000
commit9447be663d424bc49bf511468d3188c90bf3978a (patch)
tree9b4459ca9c29b86041d203906b1227d3be244f15 /challenge-150
parentc78c1da46f30d3bd3088822925ab25b2e6ffe02d (diff)
downloadperlweeklychallenge-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-xchallenge-150/perlboy1967/perl/ch-1.pl14
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]
}