aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-070/mark-anderson/raku/ch-1.raku21
-rw-r--r--challenge-070/mark-anderson/raku/ch-2.raku21
2 files changed, 42 insertions, 0 deletions
diff --git a/challenge-070/mark-anderson/raku/ch-1.raku b/challenge-070/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..4dba5f55dd
--- /dev/null
+++ b/challenge-070/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,21 @@
+#!/usr/bin/env raku
+
+sub MAIN(Str $S, UInt $C, UInt $O) {
+ Usage() if $C < 1 or $O < 1 or $O < $C or $S.chars < $C + $O;
+
+ my $N = $S.chars;
+
+ my @S = $S.comb;
+
+ map { @S[$_ % $N, ($_ + $O) % $N] = @S[($_ + $O) % $N, $_ % $N] }, 1 .. $C;
+
+ say @S.join;
+}
+
+sub Usage {
+ note "Usage: $*PROGRAM-NAME " ~ '$S $C $O';
+
+ note 'where $C >= 1, $O >= 1, $O >= $C, $S.chars >= $C + $O';
+
+ exit;
+}
diff --git a/challenge-070/mark-anderson/raku/ch-2.raku b/challenge-070/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..52ef77aa94
--- /dev/null
+++ b/challenge-070/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,21 @@
+#!/usr/bin/env raku
+
+sub MAIN(UInt $N where 2 <= $N <= 5) {
+ my @A = [0, 1];
+
+ loop {
+ state $C = 2;
+
+ my @S1 = @A>>.fmt("%0" ~ $C ~ "b");
+
+ my @S2 = @A>>.fmt("%0" ~ $C - 1 ~ "b").reverse.map("1" ~ *);
+
+ @S1.append(@S2);
+
+ @A = @S1.map({ ":2<$_>".Int }); #https://tinyurl.com/y3nw4q5j
+
+ last if $C++ == $N;
+ }
+
+ say @A;
+}