diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-09-23 02:10:15 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-09-23 02:10:15 +0100 |
| commit | 529cd7e8e56660b060bddc458c20ccdd5be23866 (patch) | |
| tree | 8ac9695eabdc952457fb3d7f5ac7642c762c33e1 | |
| parent | 056f13fef025350445042acf19fb3e1e9301f7da (diff) | |
| parent | 7a392947f716f2f91abfe7ec1f19e974a5eea98a (diff) | |
| download | perlweeklychallenge-club-529cd7e8e56660b060bddc458c20ccdd5be23866.tar.gz perlweeklychallenge-club-529cd7e8e56660b060bddc458c20ccdd5be23866.tar.bz2 perlweeklychallenge-club-529cd7e8e56660b060bddc458c20ccdd5be23866.zip | |
Merge pull request #2354 from gugod/master
gugod's solution for challange 79.
| -rw-r--r-- | challenge-079/gugod/raku/ch-1.raku | 26 | ||||
| -rw-r--r-- | challenge-079/gugod/raku/ch-2.raku | 27 |
2 files changed, 53 insertions, 0 deletions
diff --git a/challenge-079/gugod/raku/ch-1.raku b/challenge-079/gugod/raku/ch-1.raku new file mode 100644 index 0000000000..bba3e75515 --- /dev/null +++ b/challenge-079/gugod/raku/ch-1.raku @@ -0,0 +1,26 @@ +#!/usr/bin/env raku + +# https://perlweeklychallenge.org/blog/perl-weekly-challenge-079/ +# TASK #1 › Count Set Bits +# +# raku ./ch-1.raku 4 +# 5 % 1000000007 = 5 +# + +sub count_set_bits(Int $n is copy) { + my Int $c = 0; + while $n > 0 { + $c += ($n % 2); + $n div= 2; + } + return $c; +} + +sub MAIN(Int $N) { + my $total = 0; + for 1..$N -> $n { + my $c = count_set_bits($n); + $total += $c; + } + say "{{ $total }} % 1000000007 = " ~ ( $total % 1000000007 ); +} diff --git a/challenge-079/gugod/raku/ch-2.raku b/challenge-079/gugod/raku/ch-2.raku new file mode 100644 index 0000000000..be0f50fb14 --- /dev/null +++ b/challenge-079/gugod/raku/ch-2.raku @@ -0,0 +1,27 @@ +#!/usr/bin/env raku + +# https://perlweeklychallenge.org/blog/perl-weekly-challenge-079/ +# TASK #2 › Trapped Rain Water +# +# # raku ./ch-2.raku 2,1,4,1,2,5 +# 6 +# # raku ./ch-2.raku 3,1,3,1,1,5 +# 6 + +sub trapped-rain-water (@N) { + my $water = 0; + + my @left-wall = (0..@N.end()).map(-> $i { @N[0..$i].max() }); + my @right-wall = (0..@N.end()).map(-> $i { @N[$i..*].max() }); + + for 0..@N.end() -> $i { + $water += ( @left-wall[$i] - @N[$i], @right-wall[$i] - @N[$i] ).min(); + } + + return $water; +} + +sub MAIN (Str $N) { + my @N = $N.split(','); + say trapped-rain-water(@N); +} |
