aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-09-28 01:54:19 +0100
committerGitHub <noreply@github.com>2020-09-28 01:54:19 +0100
commitf249354ee4c58d66db150dce98fb6a0c00d613b2 (patch)
tree11fe5845224545d4e25a86c83341b91936845a46
parent8c58aefe265953e2dde7b1c826423d583bf749bf (diff)
parente1e84996019e10e6ff2421a35e251a01768a2700 (diff)
downloadperlweeklychallenge-club-f249354ee4c58d66db150dce98fb6a0c00d613b2.tar.gz
perlweeklychallenge-club-f249354ee4c58d66db150dce98fb6a0c00d613b2.tar.bz2
perlweeklychallenge-club-f249354ee4c58d66db150dce98fb6a0c00d613b2.zip
Merge pull request #2392 from jaldhar/challenge-079
Challenge 79 by Jaldhar H. Vyas
-rw-r--r--challenge-079/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-079/jaldhar-h-vyas/perl/ch-1.pl24
-rwxr-xr-xchallenge-079/jaldhar-h-vyas/perl/ch-2.pl44
-rwxr-xr-xchallenge-079/jaldhar-h-vyas/raku/ch-1.p69
-rwxr-xr-xchallenge-079/jaldhar-h-vyas/raku/ch-2.p629
5 files changed, 107 insertions, 0 deletions
diff --git a/challenge-079/jaldhar-h-vyas/blog.txt b/challenge-079/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..fce9d84407
--- /dev/null
+++ b/challenge-079/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2020/09/perl_weekly_challenge_week_79.html
diff --git a/challenge-079/jaldhar-h-vyas/perl/ch-1.pl b/challenge-079/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..d2e6e12807
--- /dev/null
+++ b/challenge-079/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+use English qw/ -no_match_vars /;
+
+sub usage {
+ print<<"-USAGE-";
+Usage:
+ $PROGRAM_NAME <N>
+
+ <N> positive integer
+-USAGE-
+ exit 0;
+}
+
+my $N = shift // usage();
+if ($N < 1) {
+ usage();
+}
+
+my $total = 0;
+map { $total += sprintf("%b", $_) =~ tr/1/1/; } 1 .. $N;
+
+say "$total % 1000000007 = $total";
diff --git a/challenge-079/jaldhar-h-vyas/perl/ch-2.pl b/challenge-079/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..5285e37bcd
--- /dev/null
+++ b/challenge-079/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,44 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+
+sub max {
+ my (@N) = @_;
+ my $maximum = 0;
+
+ for my $i (@N) {
+ if ($i > $maximum) {
+ $maximum = $i;
+ }
+ }
+
+ return $maximum;
+}
+
+sub histogram {
+ my (@N) = @_;
+
+ for my $y (reverse 1 .. max(@N)) {
+ say "$y ",
+ (join q{}, map { $N[$_] < $y ? q{ } : q{#}; } (0 .. scalar @N - 1));
+ }
+ say '-' x scalar @N + 2;
+ say q{ }, (join q{}, @N);
+}
+
+my @N = @ARGV;
+
+my $rainwater = 0;
+my $tallest = $N[0];
+
+for my $i (0 .. scalar @N - 1) {
+
+ if ($N[$i] < $tallest) {
+ $rainwater += ($tallest - $N[$i]);
+ } else {
+ $tallest = $N[$i];
+ }
+}
+
+histogram(@N);
+say $rainwater;
diff --git a/challenge-079/jaldhar-h-vyas/raku/ch-1.p6 b/challenge-079/jaldhar-h-vyas/raku/ch-1.p6
new file mode 100755
index 0000000000..4e9532aa85
--- /dev/null
+++ b/challenge-079/jaldhar-h-vyas/raku/ch-1.p6
@@ -0,0 +1,9 @@
+#!/usr/bin/perl6
+
+sub MAIN(
+ Int $N where { $N > 0 } #= positive integer
+) {
+ my $total = [+] (1 .. $N).map({ sprintf("%b", $_) ~~ m:g/ 1 /; });
+
+ say "$total % 1000000007 = $total";
+} \ No newline at end of file
diff --git a/challenge-079/jaldhar-h-vyas/raku/ch-2.p6 b/challenge-079/jaldhar-h-vyas/raku/ch-2.p6
new file mode 100755
index 0000000000..05bd3c88bd
--- /dev/null
+++ b/challenge-079/jaldhar-h-vyas/raku/ch-2.p6
@@ -0,0 +1,29 @@
+#!/usr/bin/perl6
+
+sub histogram(@N) {
+ for @N.max ... 1 -> $y {
+ say "$y ",
+ (0 ..^ @N.elems).map({ @N[$_] < $y ?? q{ } !! q{#}; }).join(q{});
+ }
+ say '-' x @N.elems + 2;
+ say q{ }, @N.join(q{});
+}
+
+sub MAIN(
+ *@N #= positive integers
+) {
+ my $rainwater = 0;
+ my $tallest = @N[0];
+
+ for 0 ..^ @N.elems -> $i {
+
+ if (@N[$i] < $tallest) {
+ $rainwater += ($tallest - @N[$i]);
+ } else {
+ $tallest = @N[$i];
+ }
+ }
+
+ histogram(@N);
+ say $rainwater;
+} \ No newline at end of file