aboutsummaryrefslogtreecommitdiff
path: root/challenge-079
diff options
context:
space:
mode:
authorMark Anderson <mark@frontrangerunner.com>2020-09-21 01:24:40 -0600
committerMark Anderson <mark@frontrangerunner.com>2020-09-21 01:24:40 -0600
commitc7c05e77d7d8a112b8338eb8b1fb58b81e0f20e3 (patch)
tree915794a573d62d8141cf8b8a3538c00c69f94145 /challenge-079
parent5ac16ac7e9826137e0da5597e954f4992c66205d (diff)
downloadperlweeklychallenge-club-c7c05e77d7d8a112b8338eb8b1fb58b81e0f20e3.tar.gz
perlweeklychallenge-club-c7c05e77d7d8a112b8338eb8b1fb58b81e0f20e3.tar.bz2
perlweeklychallenge-club-c7c05e77d7d8a112b8338eb8b1fb58b81e0f20e3.zip
Challenge 79 Solutions (Raku)
Diffstat (limited to 'challenge-079')
-rw-r--r--challenge-079/mark-anderson/raku/ch-1.raku3
-rw-r--r--challenge-079/mark-anderson/raku/ch-2.raku37
2 files changed, 40 insertions, 0 deletions
diff --git a/challenge-079/mark-anderson/raku/ch-1.raku b/challenge-079/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..99e060c88f
--- /dev/null
+++ b/challenge-079/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,3 @@
+unit sub MAIN($N where * > 0);
+
+say (1..$N).map(*.base(2).indices(1)).sum mod 1000000007;
diff --git a/challenge-079/mark-anderson/raku/ch-2.raku b/challenge-079/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..d3ee9a7606
--- /dev/null
+++ b/challenge-079/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,37 @@
+=begin usage
+
+Usage: raku ch-2.raku 9 3 1 1 4 2 3 2 5 1 5 8 5 5 4 3 1 7 8 9 9 1 9 5 2 2 6 5
+
+Output:
+
+9 # # # #
+8 # # # # # #
+7 # # # # # # #
+6 # # # # # # # #
+5 # # # # # # # # # # # # # #
+4 # # # # # # # # # # # # # # # #
+3 # # # # # # # # # # # # # # # # # # #
+2 # # # # # # # # # # # # # # # # # # # # # # #
+1 # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+111
+
+=end usage
+
+#| MAIN only takes arguments from 1 to 9
+unit sub MAIN(*@ints where (.elems > 0 and .all ~~ 1..9));
+
+my $pos = 0;
+my $sum = 0;
+
+for @ints.max...1 -> $n {
+ say "$n @ints.map({ $_ >= $n ?? "#" !! " " })";
+}
+
+while @ints.join ~~ m:c($pos)/ (\d)(\d+)(\d) <?{ $0 > $1.comb.all < $2 }> / {
+ $sum += (($0, $2).min <<->> $1.comb).sum;
+
+ $pos = $/.to - 1;
+}
+
+say "\n", $sum;