aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-09-23 02:10:15 +0100
committerGitHub <noreply@github.com>2020-09-23 02:10:15 +0100
commit529cd7e8e56660b060bddc458c20ccdd5be23866 (patch)
tree8ac9695eabdc952457fb3d7f5ac7642c762c33e1
parent056f13fef025350445042acf19fb3e1e9301f7da (diff)
parent7a392947f716f2f91abfe7ec1f19e974a5eea98a (diff)
downloadperlweeklychallenge-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.raku26
-rw-r--r--challenge-079/gugod/raku/ch-2.raku27
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);
+}