aboutsummaryrefslogtreecommitdiff
path: root/challenge-053
diff options
context:
space:
mode:
authorMark Anderson <mark@frontrangerunner.com>2020-03-28 23:55:36 -0600
committerMark Anderson <mark@frontrangerunner.com>2020-03-28 23:55:36 -0600
commitc0a1577b28b5a32e487d965bf8d178b988dafcf0 (patch)
treea737c57b5a741204a2ac758858c4908e3fa95bdc /challenge-053
parentd931a0bb105e298009d8296b286b534d092008c4 (diff)
downloadperlweeklychallenge-club-c0a1577b28b5a32e487d965bf8d178b988dafcf0.tar.gz
perlweeklychallenge-club-c0a1577b28b5a32e487d965bf8d178b988dafcf0.tar.bz2
perlweeklychallenge-club-c0a1577b28b5a32e487d965bf8d178b988dafcf0.zip
final versions
Diffstat (limited to 'challenge-053')
-rw-r--r--challenge-053/mark-anderson/raku/ch-1.p614
-rw-r--r--challenge-053/mark-anderson/raku/ch-2.p627
2 files changed, 28 insertions, 13 deletions
diff --git a/challenge-053/mark-anderson/raku/ch-1.p6 b/challenge-053/mark-anderson/raku/ch-1.p6
index b45f906722..318312966a 100644
--- a/challenge-053/mark-anderson/raku/ch-1.p6
+++ b/challenge-053/mark-anderson/raku/ch-1.p6
@@ -1,11 +1,17 @@
-#!/usr/bin/env raku
+#!/usr/bin/env raku
my @matrix = [ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ];
-say [Z] @matrix.reverse; # rotate 90
+say "Matrix";
+.say for @matrix;
-say @matrix.map(*.reverse).reverse; # rotate 180
+say "\nMatrix rotated 90";
+.say for ([Z] @matrix.reverse)>>.Array;
-say ([Z] @matrix).reverse; # rotate 270
+say "\nMatrix rotated 180";
+.say for @matrix>>.reverse.reverse>>.Array;
+
+say "\nMatrix rotated 270";
+.say for ([Z] @matrix).reverse>>.Array;
diff --git a/challenge-053/mark-anderson/raku/ch-2.p6 b/challenge-053/mark-anderson/raku/ch-2.p6
index 94cc2f68d9..f4d9cdc129 100644
--- a/challenge-053/mark-anderson/raku/ch-2.p6
+++ b/challenge-053/mark-anderson/raku/ch-2.p6
@@ -8,17 +8,26 @@ sub MAIN($length where 1 <= $length <= 5) {
u => <o e>;
for <a e i o u> -> $first_letter {
- my @queue = Empty;
- @queue.push($first_letter);
+ append_letter($first_letter);
+ }
+
+ multi sub append_letter($ltr where $length == 1) {
+ say $ltr;
+ }
+
+ multi sub append_letter($str) {
+ my $last_letter = $str.substr(*-1);
- while @queue[0].chars < $length {
- my $str = @queue.shift;
- my $last_letter = $str.substr(*-1);
- for %next_letter{$last_letter}.Array -> $ltr {
- @queue.push($str ~ $ltr);
+ for %next_letter{$last_letter}.Array -> $ltr {
+ my $new_str = $str ~ $ltr;
+
+ if ($new_str.chars == $length) {
+ say $new_str;
}
- }
- say @queue.join("\n");
+ else {
+ append_letter($new_str);
+ }
+ }
}
}