aboutsummaryrefslogtreecommitdiff
path: root/challenge-079
diff options
context:
space:
mode:
author冯昶 <seaker@qq.com>2020-09-21 15:50:45 +0800
committer冯昶 <seaker@qq.com>2020-09-21 15:50:45 +0800
commitacbc30c04977af09ff3e93e74642e325ea1e7083 (patch)
tree67fecb4fb03ba8beb15f2bcdc95d8ef064ac3508 /challenge-079
parentbca0c362c212fc0dadc5ed7d9a5e4fa1aece4bfb (diff)
downloadperlweeklychallenge-club-acbc30c04977af09ff3e93e74642e325ea1e7083.tar.gz
perlweeklychallenge-club-acbc30c04977af09ff3e93e74642e325ea1e7083.tar.bz2
perlweeklychallenge-club-acbc30c04977af09ff3e93e74642e325ea1e7083.zip
challeng#079, raku solutions
Diffstat (limited to 'challenge-079')
-rwxr-xr-xchallenge-079/feng-chang/raku/ch-1.raku6
-rwxr-xr-xchallenge-079/feng-chang/raku/ch-2.raku23
2 files changed, 29 insertions, 0 deletions
diff --git a/challenge-079/feng-chang/raku/ch-1.raku b/challenge-079/feng-chang/raku/ch-1.raku
new file mode 100755
index 0000000000..e1c93acede
--- /dev/null
+++ b/challenge-079/feng-chang/raku/ch-1.raku
@@ -0,0 +1,6 @@
+#!/bin/env raku
+
+sub MAIN(UInt:D $N) {
+ my UInt $total = (1..$N).map({ $_.base(2).comb.sum }).sum;
+ say "{ $total } % 1000000007 = { $total % 1000000007 }";
+}
diff --git a/challenge-079/feng-chang/raku/ch-2.raku b/challenge-079/feng-chang/raku/ch-2.raku
new file mode 100755
index 0000000000..6bd9822e50
--- /dev/null
+++ b/challenge-079/feng-chang/raku/ch-2.raku
@@ -0,0 +1,23 @@
+#!/bin/env raku
+
+sub trapped-drops(@N) returns UInt {
+ my UInt $cnt;
+
+ repeat {
+ @N.shift while @N.elems > 0 and @N[0] ≤ 0;
+ @N.pop while @N.elems > 0 and @N[*-1] ≤ 0;
+ last if @N.elems < 3;
+
+ my $height = min(@N[0, *-1]);
+ for 0..^@N.elems -> $i {
+ my $drop = max(0, $height - @N[$i]);
+ $cnt += $drop;
+ @N[$i] += $drop - $height;
+ }
+ } while @N.elems > 2;
+
+ $cnt;
+}
+
+say trapped-drops(Array.new(2, 1, 4, 1, 2, 5));
+say trapped-drops(Array.new(3, 1, 3, 1, 1, 5));