aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Bell_West <roger@firedrake.org>2020-08-03 09:56:43 +0100
committerRoger Bell_West <roger@firedrake.org>2020-08-03 09:56:43 +0100
commitdffe00df6e9008947810fac4ea02769f62d3981e (patch)
treef78ab0cafd88df86a2a0b529a11390db048964a6
parent8c2f5fd585d45d45a93bea8031ad0a30c9534218 (diff)
downloadperlweeklychallenge-club-dffe00df6e9008947810fac4ea02769f62d3981e.tar.gz
perlweeklychallenge-club-dffe00df6e9008947810fac4ea02769f62d3981e.tar.bz2
perlweeklychallenge-club-dffe00df6e9008947810fac4ea02769f62d3981e.zip
Solutions for challenge #72.
-rwxr-xr-xchallenge-072/roger-bell-west/perl/ch-1.pl25
-rwxr-xr-xchallenge-072/roger-bell-west/perl/ch-2.pl24
-rwxr-xr-xchallenge-072/roger-bell-west/raku/ch-1.p623
-rwxr-xr-xchallenge-072/roger-bell-west/raku/ch-2.p618
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;
+}