diff options
| author | Kang-min Liu <gugod@gugod.org> | 2020-09-23 09:29:06 +0900 |
|---|---|---|
| committer | Kang-min Liu <gugod@gugod.org> | 2020-09-23 09:29:06 +0900 |
| commit | 7a392947f716f2f91abfe7ec1f19e974a5eea98a (patch) | |
| tree | 6a3186e540c61fc6e23107e2fdee959c2f2d58f9 | |
| parent | c579d650f514f00599f4926994887addcd01a780 (diff) | |
| download | perlweeklychallenge-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.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); +} |
