diff options
| -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]; } |
