aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-02-09 17:07:09 +0000
committerGitHub <noreply@github.com>2020-02-09 17:07:09 +0000
commit8b24cde02f74b59411356252ca3b17cefe424048 (patch)
tree088d47535e78cfbe22e1b84bc5d043560b3ea31b
parent3cd57c6f8846f834e51b4cdaed52159be28bd8a2 (diff)
parent23bc7df71efa0b7105de855b2de6583278a818a4 (diff)
downloadperlweeklychallenge-club-8b24cde02f74b59411356252ca3b17cefe424048.tar.gz
perlweeklychallenge-club-8b24cde02f74b59411356252ca3b17cefe424048.tar.bz2
perlweeklychallenge-club-8b24cde02f74b59411356252ca3b17cefe424048.zip
Merge pull request #1230 from andemark/branch-for-challenge-046
Challenge 46 solutions
-rw-r--r--challenge-046/mark-anderson/raku/ch-1.p637
-rw-r--r--challenge-046/mark-anderson/raku/ch-2.p614
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];
}