From 7a392947f716f2f91abfe7ec1f19e974a5eea98a Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Wed, 23 Sep 2020 09:29:06 +0900 Subject: gugod's solution for challange 79. --- challenge-079/gugod/raku/ch-1.raku | 26 ++++++++++++++++++++++++++ challenge-079/gugod/raku/ch-2.raku | 27 +++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 challenge-079/gugod/raku/ch-1.raku create mode 100644 challenge-079/gugod/raku/ch-2.raku 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); +} -- cgit