diff options
| author | Mark Anderson <mark@frontrangerunner.com> | 2020-02-09 07:28:39 -0700 |
|---|---|---|
| committer | Mark Anderson <mark@frontrangerunner.com> | 2020-02-09 07:28:39 -0700 |
| commit | 23bc7df71efa0b7105de855b2de6583278a818a4 (patch) | |
| tree | 0be9f263d1a0e142d6a1ea9d175defe7850f4029 | |
| parent | 5debe59c5dab2ad488365484b47599b73564b6a9 (diff) | |
| download | perlweeklychallenge-club-23bc7df71efa0b7105de855b2de6583278a818a4.tar.gz perlweeklychallenge-club-23bc7df71efa0b7105de855b2de6583278a818a4.tar.bz2 perlweeklychallenge-club-23bc7df71efa0b7105de855b2de6583278a818a4.zip | |
Challenge 46 solutions
| -rw-r--r-- | challenge-046/mark-anderson/raku/ch-1.p6 | 37 | ||||
| -rw-r--r-- | challenge-046/mark-anderson/raku/ch-2.p6 | 14 |
2 files changed, 40 insertions, 11 deletions
diff --git a/challenge-046/mark-anderson/raku/ch-1.p6 b/challenge-046/mark-anderson/raku/ch-1.p6 new file mode 100644 index 0000000000..0d5cd1c011 --- /dev/null +++ b/challenge-046/mark-anderson/raku/ch-1.p6 @@ -0,0 +1,37 @@ +#!/usr/bin/env perl6 + +my $msg1 = ' + H x l 4 ! + c e - l o + z e 6 l g + H W l v R + q 9 m # o +'; + +my $msg2 = ' + P + 2 l ! a t o + 1 e 8 0 R $ 4 u + 5 - r ] + a > / + P x w l b 3 k \ + 2 e 3 5 R 8 y u + < ! r ^ ( ) k 0 +'; + +say decipher($msg1); +say decipher($msg2); + +sub decipher(Str:D $msg) { + my @AoL; + my $result; + + for $msg.split(/\n/, :skip-empty) -> $str { + @AoL.push($str.trim-trailing.comb(/\S/).List); + } + + for [Z] @AoL -> $list { + $list.Str ~~ /(\S) .* {} :my $letter = $0; $letter/; + $result ~= $letter; + } + + return $result; +} diff --git a/challenge-046/mark-anderson/raku/ch-2.p6 b/challenge-046/mark-anderson/raku/ch-2.p6 index 021a5265ce..e4f9e5fb68 100644 --- a/challenge-046/mark-anderson/raku/ch-2.p6 +++ b/challenge-046/mark-anderson/raku/ch-2.p6 @@ -1,23 +1,15 @@ #!/usr/bin/env perl6 -my $open := True; +my \open = True; -# @doors is an array of Bools. -# The first employee opens every door. -my @doors = $open xx 500; +my @doors = open xx 500; for 2 .. 500 -> $emp { - # The following sequence is the doors that - # the next employee opens or closes. for $emp, $emp*2 ... 500 -> $door { - # If the door is open then close it. - # If the door is closed then open it. - # The "?^= $open" will toggle the Bool. - @doors[$door-1] ?^= $open; + @doors[$door-1] ?^= open; } } for 1 .. 500 -> $door { - # Print the door if it's open. say $door if @doors[$door-1]; } |
