From e1e84996019e10e6ff2421a35e251a01768a2700 Mon Sep 17 00:00:00 2001 From: "Jaldhar H. Vyas" Date: Sun, 27 Sep 2020 20:48:48 -0400 Subject: Challenge 79 by Jaldhar H. Vyas --- challenge-079/jaldhar-h-vyas/blog.txt | 1 + challenge-079/jaldhar-h-vyas/perl/ch-1.pl | 24 +++++++++++++++++ challenge-079/jaldhar-h-vyas/perl/ch-2.pl | 44 +++++++++++++++++++++++++++++++ challenge-079/jaldhar-h-vyas/raku/ch-1.p6 | 9 +++++++ challenge-079/jaldhar-h-vyas/raku/ch-2.p6 | 29 ++++++++++++++++++++ 5 files changed, 107 insertions(+) create mode 100644 challenge-079/jaldhar-h-vyas/blog.txt create mode 100755 challenge-079/jaldhar-h-vyas/perl/ch-1.pl create mode 100755 challenge-079/jaldhar-h-vyas/perl/ch-2.pl create mode 100755 challenge-079/jaldhar-h-vyas/raku/ch-1.p6 create mode 100755 challenge-079/jaldhar-h-vyas/raku/ch-2.p6 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 + + 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 -- cgit