aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKang-min Liu <gugod@gugod.org>2020-09-23 09:29:06 +0900
committerKang-min Liu <gugod@gugod.org>2020-09-23 09:29:06 +0900
commit7a392947f716f2f91abfe7ec1f19e974a5eea98a (patch)
tree6a3186e540c61fc6e23107e2fdee959c2f2d58f9
parentc579d650f514f00599f4926994887addcd01a780 (diff)
downloadperlweeklychallenge-club-7a392947f716f2f91abfe7ec1f19e974a5eea98a.tar.gz
perlweeklychallenge-club-7a392947f716f2f91abfe7ec1f19e974a5eea98a.tar.bz2
perlweeklychallenge-club-7a392947f716f2f91abfe7ec1f19e974a5eea98a.zip
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);
+}