diff options
| author | 冯昶 <seaker@qq.com> | 2020-09-21 15:50:45 +0800 |
|---|---|---|
| committer | 冯昶 <seaker@qq.com> | 2020-09-21 15:50:45 +0800 |
| commit | acbc30c04977af09ff3e93e74642e325ea1e7083 (patch) | |
| tree | 67fecb4fb03ba8beb15f2bcdc95d8ef064ac3508 /challenge-079 | |
| parent | bca0c362c212fc0dadc5ed7d9a5e4fa1aece4bfb (diff) | |
| download | perlweeklychallenge-club-acbc30c04977af09ff3e93e74642e325ea1e7083.tar.gz perlweeklychallenge-club-acbc30c04977af09ff3e93e74642e325ea1e7083.tar.bz2 perlweeklychallenge-club-acbc30c04977af09ff3e93e74642e325ea1e7083.zip | |
challeng#079, raku solutions
Diffstat (limited to 'challenge-079')
| -rwxr-xr-x | challenge-079/feng-chang/raku/ch-1.raku | 6 | ||||
| -rwxr-xr-x | challenge-079/feng-chang/raku/ch-2.raku | 23 |
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)); |
