diff options
| author | Roger Bell_West <roger@firedrake.org> | 2020-08-03 09:56:43 +0100 |
|---|---|---|
| committer | Roger Bell_West <roger@firedrake.org> | 2020-08-03 09:56:43 +0100 |
| commit | dffe00df6e9008947810fac4ea02769f62d3981e (patch) | |
| tree | f78ab0cafd88df86a2a0b529a11390db048964a6 | |
| parent | 8c2f5fd585d45d45a93bea8031ad0a30c9534218 (diff) | |
| download | perlweeklychallenge-club-dffe00df6e9008947810fac4ea02769f62d3981e.tar.gz perlweeklychallenge-club-dffe00df6e9008947810fac4ea02769f62d3981e.tar.bz2 perlweeklychallenge-club-dffe00df6e9008947810fac4ea02769f62d3981e.zip | |
Solutions for challenge #72.
| -rwxr-xr-x | challenge-072/roger-bell-west/perl/ch-1.pl | 25 | ||||
| -rwxr-xr-x | challenge-072/roger-bell-west/perl/ch-2.pl | 24 | ||||
| -rwxr-xr-x | challenge-072/roger-bell-west/raku/ch-1.p6 | 23 | ||||
| -rwxr-xr-x | challenge-072/roger-bell-west/raku/ch-2.p6 | 18 |
4 files changed, 90 insertions, 0 deletions
diff --git a/challenge-072/roger-bell-west/perl/ch-1.pl b/challenge-072/roger-bell-west/perl/ch-1.pl new file mode 100755 index 0000000000..7a42ca1232 --- /dev/null +++ b/challenge-072/roger-bell-west/perl/ch-1.pl @@ -0,0 +1,25 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +use Math::GMP; +use Test::More tests => 5; + +is(zerofact(10),2,'ten'); +is(zerofact(7),1,'seven'); +is(zerofact(4),0,'four'); +is(zerofact(69),15,'sixty-nine'); +is(zerofact(125),31,'one hundred and twenty-five'); + +sub zerofact { + my $n=shift; + $n=Math::GMP->new($n); + my $f=$n->bfac->get_str_gmp(10); + my $l=0; + $f =~ /(0+)$/; + if (defined $1) { + $l=length($1); + } + return $l; +} diff --git a/challenge-072/roger-bell-west/perl/ch-2.pl b/challenge-072/roger-bell-west/perl/ch-2.pl new file mode 100755 index 0000000000..d1be9830d1 --- /dev/null +++ b/challenge-072/roger-bell-west/perl/ch-2.pl @@ -0,0 +1,24 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +range('input.txt',4,12); + +sub range { + my $fn=shift; + my $a=shift; + my $b=shift; + my $n=0; + open I,'<',$fn; + while (<I>) { + $n++; + if ($n > $b) { + last; + } + if ($n>=$a) { + print $_; + } + } + close I; +} diff --git a/challenge-072/roger-bell-west/raku/ch-1.p6 b/challenge-072/roger-bell-west/raku/ch-1.p6 new file mode 100755 index 0000000000..e5c1e4123f --- /dev/null +++ b/challenge-072/roger-bell-west/raku/ch-1.p6 @@ -0,0 +1,23 @@ +#! /usr/bin/perl6 + +use Test; + +plan 5; + +is(zerofact(10),2,'ten'); +is(zerofact(7),1,'seven'); +is(zerofact(4),0,'four'); +is(zerofact(69),15,'sixty-nine'); +is(zerofact(125),31,'one hundred and twenty-five'); + +sub zerofact($n) { + my $k=5; + my $t; + my $a=0; + repeat { + $a=floor($n/$k); + $t+=$a; + $k*=5; + } while ($a>0); + return $t; +} diff --git a/challenge-072/roger-bell-west/raku/ch-2.p6 b/challenge-072/roger-bell-west/raku/ch-2.p6 new file mode 100755 index 0000000000..b38085be5b --- /dev/null +++ b/challenge-072/roger-bell-west/raku/ch-2.p6 @@ -0,0 +1,18 @@ +#! /usr/bin/perl6 + +range('input.txt',4,12); + +sub range($fn,$a,$b) { + my $n=0; + my $fh=open :r,$fn; + for $fh.lines { + $n++; + if ($n > $b) { + last; + } + if ($n>=$a) { + say $_; + } + } + close $fh; +} |
