aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark A <andemark@a-iot1t.uch.ad.pvt>2021-02-17 03:27:22 -0700
committerMark A <andemark@a-iot1t.uch.ad.pvt>2021-02-17 03:27:22 -0700
commit889a7b2fefef365c9d80557c482bc3e45379312f (patch)
tree64a127b6ead51cb2c14e93f57d234140ef557627
parente9853f8e34bf45f04de827b626cc774ae05b8c8f (diff)
downloadperlweeklychallenge-club-889a7b2fefef365c9d80557c482bc3e45379312f.tar.gz
perlweeklychallenge-club-889a7b2fefef365c9d80557c482bc3e45379312f.tar.bz2
perlweeklychallenge-club-889a7b2fefef365c9d80557c482bc3e45379312f.zip
initial ch-2.raku
-rw-r--r--challenge-100/mark-anderson/raku/ch-2.raku21
1 files changed, 21 insertions, 0 deletions
diff --git a/challenge-100/mark-anderson/raku/ch-2.raku b/challenge-100/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..b1464b8466
--- /dev/null
+++ b/challenge-100/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,21 @@
+#!/usr/bin/env raku
+
+use Test;
+plan 4;
+
+is min-triangle-sum([[1], [2,4], [6,4,9], [5,1,7,2]]), 8;
+is min-triangle-sum([[3], [3,1], [5,2,3], [4,3,1,3]]), 7;
+is min-triangle-sum([[2], [3,4], [6,5,7], [4,1,8,3]]), 11;
+is min-triangle-sum([[7], [3,6], [6,4,9], [5,1,7,2]]), 15;
+
+sub min-triangle-sum(@triangle)
+{
+ my @a = (flat roundrobin @triangle[1]<>, @triangle[0]<>).rotor(2 => -1);
+ my $head = @a.shift.sum;
+ my $tail = @a.pop.sum;
+ my @mid = map -> $a, $b { $a.sum min $b.sum }, @a;
+ shift @triangle;
+ @triangle[0] = [$head, |@mid, $tail];
+ min-triangle-sum(@triangle) if @triangle > 1;
+ @triangle[0].min;
+}