From 23bc7df71efa0b7105de855b2de6583278a818a4 Mon Sep 17 00:00:00 2001 From: Mark Anderson Date: Sun, 9 Feb 2020 07:28:39 -0700 Subject: Challenge 46 solutions --- challenge-046/mark-anderson/raku/ch-1.p6 | 37 ++++++++++++++++++++++++++++++++ challenge-046/mark-anderson/raku/ch-2.p6 | 14 +++--------- 2 files changed, 40 insertions(+), 11 deletions(-) create mode 100644 challenge-046/mark-anderson/raku/ch-1.p6 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]; } -- cgit