diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-09-28 01:54:19 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-09-28 01:54:19 +0100 |
| commit | f249354ee4c58d66db150dce98fb6a0c00d613b2 (patch) | |
| tree | 11fe5845224545d4e25a86c83341b91936845a46 | |
| parent | 8c58aefe265953e2dde7b1c826423d583bf749bf (diff) | |
| parent | e1e84996019e10e6ff2421a35e251a01768a2700 (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-079/jaldhar-h-vyas/perl/ch-1.pl | 24 | ||||
| -rwxr-xr-x | challenge-079/jaldhar-h-vyas/perl/ch-2.pl | 44 | ||||
| -rwxr-xr-x | challenge-079/jaldhar-h-vyas/raku/ch-1.p6 | 9 | ||||
| -rwxr-xr-x | challenge-079/jaldhar-h-vyas/raku/ch-2.p6 | 29 |
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 |
