diff options
| author | Mark Anderson <mark@frontrangerunner.com> | 2020-07-24 00:33:12 -0600 |
|---|---|---|
| committer | Mark Anderson <mark@frontrangerunner.com> | 2020-07-24 00:33:12 -0600 |
| commit | 7ecd63f51bd82456881905ab016848251bc8cf90 (patch) | |
| tree | a5acbdaff319a8a40a619879cadfda93f74bb3db | |
| parent | d2a7197a605fa01c4cfc6ff0c019772be626038e (diff) | |
| download | perlweeklychallenge-club-7ecd63f51bd82456881905ab016848251bc8cf90.tar.gz perlweeklychallenge-club-7ecd63f51bd82456881905ab016848251bc8cf90.tar.bz2 perlweeklychallenge-club-7ecd63f51bd82456881905ab016848251bc8cf90.zip | |
Challenge 70 Solutions
| -rw-r--r-- | challenge-070/mark-anderson/raku/ch-1.raku | 21 | ||||
| -rw-r--r-- | challenge-070/mark-anderson/raku/ch-2.raku | 21 |
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; +} |
