diff options
| author | Mark Anderson <mark@frontrangerunner.com> | 2020-03-28 23:55:36 -0600 |
|---|---|---|
| committer | Mark Anderson <mark@frontrangerunner.com> | 2020-03-28 23:55:36 -0600 |
| commit | c0a1577b28b5a32e487d965bf8d178b988dafcf0 (patch) | |
| tree | a737c57b5a741204a2ac758858c4908e3fa95bdc /challenge-053 | |
| parent | d931a0bb105e298009d8296b286b534d092008c4 (diff) | |
| download | perlweeklychallenge-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.p6 | 14 | ||||
| -rw-r--r-- | challenge-053/mark-anderson/raku/ch-2.p6 | 27 |
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); + } + } } } |
