diff options
| -rw-r--r-- | challenge-082/mark-anderson/raku/ch-1.p6 | 11 | ||||
| -rw-r--r-- | challenge-082/mark-anderson/raku/ch-2.p6 | 29 | ||||
| -rw-r--r-- | challenge-082/mark-anderson/raku/terms.json | 1 |
3 files changed, 15 insertions, 26 deletions
diff --git a/challenge-082/mark-anderson/raku/ch-1.p6 b/challenge-082/mark-anderson/raku/ch-1.p6 index 42e1fe2b36..78954e3b05 100644 --- a/challenge-082/mark-anderson/raku/ch-1.p6 +++ b/challenge-082/mark-anderson/raku/ch-1.p6 @@ -1,12 +1,3 @@ unit sub MAIN(UInt $m, UInt $n); -say common-factors($m, $n); - -sub common-factors($m, $n) { - - sub factor($i) { - (1..($i div 2)).grep($i %% *); - } - - (factor($m) (&) factor($n)).keys.sort.join(", ").List; -} +say (1..($m, $n).min).grep(($m, $n).all %% *).join(", ").List; diff --git a/challenge-082/mark-anderson/raku/ch-2.p6 b/challenge-082/mark-anderson/raku/ch-2.p6 index be03ab8fae..027ec71106 100644 --- a/challenge-082/mark-anderson/raku/ch-2.p6 +++ b/challenge-082/mark-anderson/raku/ch-2.p6 @@ -1,21 +1,20 @@ -use JSON::Fast; +# +# using the algorithm from +# https://www.geeksforgeeks.org/find-if-a-string-is-interleaved-of-two-other-strings-dp-33/ +# -subset Tiny-Str of Str where .chars < 10; +unit sub MAIN($A, $B, $C where .chars == $A.chars + $B.chars); -#| A.chars < 10, B.chars < 10, C.chars == A.chars + B.chars -unit sub MAIN(Tiny-Str $A, Tiny-Str $B, $C where .chars == $A.chars + $B.chars); +say is-interleaved($A, $B, $C); -my @terms := |from-json "terms.json".IO.slurp; - -say interleaved($A, $B, $C); +sub is-interleaved($A, $B, $C) { + return 1 if [==] ($A.chars, $B.chars, $C.chars, 0); -sub interleaved($A, $B, $C) { - for @terms[$A.chars].Array X @terms[$B.chars].Array -> (@A, @B) { - for ($A, $B, @A, @B), ($B, $A, @B, @A) -> ($S1, $S2, @A1, @A2) { - return 1 if roundrobin($S1.comb.rotor(@A1), $S2.comb.rotor(@A2)) - .flat.join eq $C; - } - } + return 0 unless $C.chars; - return 0; + my ($a, $b, $c) = map { .substr: 0, 1 }, ($A, $B, $C); + my ($a-rest, $b-rest, $c-rest) = map { .substr: 1 }, ($A, $B, $C); + + return +($a eq $c and is-interleaved($a-rest, $B, $c-rest)) || + +($b eq $c and is-interleaved($A, $b-rest, $c-rest)); } diff --git a/challenge-082/mark-anderson/raku/terms.json b/challenge-082/mark-anderson/raku/terms.json deleted file mode 100644 index ca62128af6..0000000000 --- a/challenge-082/mark-anderson/raku/terms.json +++ /dev/null @@ -1 +0,0 @@ -[[[0]],[[1]],[[1,1],[2]],[[1,1,1],[3],[1,2],[2,1]],[[1,1,1,1],[2,2],[4],[1,3],[3,1],[1,1,2],[1,2,1],[2,1,1]],[[1,1,1,1,1],[5],[1,2,2],[2,1,2],[2,2,1],[1,4],[4,1],[1,1,3],[1,3,1],[3,1,1],[1,1,1,2],[1,1,2,1],[1,2,1,1],[2,1,1,1],[2,3],[3,2]],[[1,1,1,1,1,1],[2,2,2],[3,3],[6],[1,5],[5,1],[1,1,2,2],[1,2,1,2],[1,2,2,1],[2,1,1,2],[2,1,2,1],[2,2,1,1],[1,1,4],[1,4,1],[4,1,1],[1,1,1,3],[1,1,3,1],[1,3,1,1],[3,1,1,1],[1,1,1,1,2],[1,1,1,2,1],[1,1,2,1,1],[1,2,1,1,1],[2,1,1,1,1],[2,4],[4,2],[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]],[[1,1,1,1,1,1,1],[7],[1,2,2,2],[2,1,2,2],[2,2,1,2],[2,2,2,1],[1,3,3],[3,1,3],[3,3,1],[1,6],[6,1],[1,1,5],[1,5,1],[5,1,1],[1,1,1,2,2],[1,1,2,1,2],[1,1,2,2,1],[1,2,1,1,2],[1,2,1,2,1],[1,2,2,1,1],[2,1,1,1,2],[2,1,1,2,1],[2,1,2,1,1],[2,2,1,1,1],[1,1,1,4],[1,1,4,1],[1,4,1,1],[4,1,1,1],[1,1,1,1,3],[1,1,1,3,1],[1,1,3,1,1],[1,3,1,1,1],[3,1,1,1,1],[1,1,1,1,1,2],[1,1,1,1,2,1],[1,1,1,2,1,1],[1,1,2,1,1,1],[1,2,1,1,1,1],[2,1,1,1,1,1],[2,5],[5,2],[2,2,3],[2,3,2],[3,2,2],[3,4],[4,3],[1,2,4],[1,4,2],[2,1,4],[2,4,1],[4,1,2],[4,2,1],[1,1,2,3],[1,1,3,2],[1,2,1,3],[1,2,3,1],[1,3,1,2],[1,3,2,1],[2,1,1,3],[2,1,3,1],[2,3,1,1],[3,1,1,2],[3,1,2,1],[3,2,1,1]],[[1,1,1,1,1,1,1,1],[2,2,2,2],[4,4],[8],[1,7],[7,1],[1,1,2,2,2],[1,2,1,2,2],[1,2,2,1,2],[1,2,2,2,1],[2,1,1,2,2],[2,1,2,1,2],[2,1,2,2,1],[2,2,1,1,2],[2,2,1,2,1],[2,2,2,1,1],[1,1,3,3],[1,3,1,3],[1,3,3,1],[3,1,1,3],[3,1,3,1],[3,3,1,1],[1,1,6],[1,6,1],[6,1,1],[1,1,1,5],[1,1,5,1],[1,5,1,1],[5,1,1,1],[1,1,1,1,2,2],[1,1,1,2,1,2],[1,1,1,2,2,1],[1,1,2,1,1,2],[1,1,2,1,2,1],[1,1,2,2,1,1],[1,2,1,1,1,2],[1,2,1,1,2,1],[1,2,1,2,1,1],[1,2,2,1,1,1],[2,1,1,1,1,2],[2,1,1,1,2,1],[2,1,1,2,1,1],[2,1,2,1,1,1],[2,2,1,1,1,1],[1,1,1,1,4],[1,1,1,4,1],[1,1,4,1,1],[1,4,1,1,1],[4,1,1,1,1],[1,1,1,1,1,3],[1,1,1,1,3,1],[1,1,1,3,1,1],[1,1,3,1,1,1],[1,3,1,1,1,1],[3,1,1,1,1,1],[1,1,1,1,1,1,2],[1,1,1,1,1,2,1],[1,1,1,1,2,1,1],[1,1,1,2,1,1,1],[1,1,2,1,1,1,1],[1,2,1,1,1,1,1],[2,1,1,1,1,1,1],[2,3,3],[3,2,3],[3,3,2],[2,6],[6,2],[2,2,4],[2,4,2],[4,2,2],[3,5],[5,3],[1,2,5],[1,5,2],[2,1,5],[2,5,1],[5,1,2],[5,2,1],[1,2,2,3],[1,2,3,2],[1,3,2,2],[2,1,2,3],[2,1,3,2],[2,2,1,3],[2,2,3,1],[2,3,1,2],[2,3,2,1],[3,1,2,2],[3,2,1,2],[3,2,2,1],[1,3,4],[1,4,3],[3,1,4],[3,4,1],[4,1,3],[4,3,1],[1,1,2,4],[1,1,4,2],[1,2,1,4],[1,2,4,1],[1,4,1,2],[1,4,2,1],[2,1,1,4],[2,1,4,1],[2,4,1,1],[4,1,1,2],[4,1,2,1],[4,2,1,1],[1,1,1,2,3],[1,1,1,3,2],[1,1,2,1,3],[1,1,2,3,1],[1,1,3,1,2],[1,1,3,2,1],[1,2,1,1,3],[1,2,1,3,1],[1,2,3,1,1],[1,3,1,1,2],[1,3,1,2,1],[1,3,2,1,1],[2,1,1,1,3],[2,1,1,3,1],[2,1,3,1,1],[2,3,1,1,1],[3,1,1,1,2],[3,1,1,2,1],[3,1,2,1,1],[3,2,1,1,1]],[[1,1,1,1,1,1,1,1,1],[3,3,3],[9],[1,2,2,2,2],[2,1,2,2,2],[2,2,1,2,2],[2,2,2,1,2],[2,2,2,2,1],[1,4,4],[4,1,4],[4,4,1],[1,8],[8,1],[1,1,7],[1,7,1],[7,1,1],[1,1,1,2,2,2],[1,1,2,1,2,2],[1,1,2,2,1,2],[1,1,2,2,2,1],[1,2,1,1,2,2],[1,2,1,2,1,2],[1,2,1,2,2,1],[1,2,2,1,1,2],[1,2,2,1,2,1],[1,2,2,2,1,1],[2,1,1,1,2,2],[2,1,1,2,1,2],[2,1,1,2,2,1],[2,1,2,1,1,2],[2,1,2,1,2,1],[2,1,2,2,1,1],[2,2,1,1,1,2],[2,2,1,1,2,1],[2,2,1,2,1,1],[2,2,2,1,1,1],[1,1,1,3,3],[1,1,3,1,3],[1,1,3,3,1],[1,3,1,1,3],[1,3,1,3,1],[1,3,3,1,1],[3,1,1,1,3],[3,1,1,3,1],[3,1,3,1,1],[3,3,1,1,1],[1,1,1,6],[1,1,6,1],[1,6,1,1],[6,1,1,1],[1,1,1,1,5],[1,1,1,5,1],[1,1,5,1,1],[1,5,1,1,1],[5,1,1,1,1],[1,1,1,1,1,2,2],[1,1,1,1,2,1,2],[1,1,1,1,2,2,1],[1,1,1,2,1,1,2],[1,1,1,2,1,2,1],[1,1,1,2,2,1,1],[1,1,2,1,1,1,2],[1,1,2,1,1,2,1],[1,1,2,1,2,1,1],[1,1,2,2,1,1,1],[1,2,1,1,1,1,2],[1,2,1,1,1,2,1],[1,2,1,1,2,1,1],[1,2,1,2,1,1,1],[1,2,2,1,1,1,1],[2,1,1,1,1,1,2],[2,1,1,1,1,2,1],[2,1,1,1,2,1,1],[2,1,1,2,1,1,1],[2,1,2,1,1,1,1],[2,2,1,1,1,1,1],[1,1,1,1,1,4],[1,1,1,1,4,1],[1,1,1,4,1,1],[1,1,4,1,1,1],[1,4,1,1,1,1],[4,1,1,1,1,1],[1,1,1,1,1,1,3],[1,1,1,1,1,3,1],[1,1,1,1,3,1,1],[1,1,1,3,1,1,1],[1,1,3,1,1,1,1],[1,3,1,1,1,1,1],[3,1,1,1,1,1,1],[1,1,1,1,1,1,1,2],[1,1,1,1,1,1,2,1],[1,1,1,1,1,2,1,1],[1,1,1,1,2,1,1,1],[1,1,1,2,1,1,1,1],[1,1,2,1,1,1,1,1],[1,2,1,1,1,1,1,1],[2,1,1,1,1,1,1,1],[2,7],[7,2],[2,2,5],[2,5,2],[5,2,2],[2,2,2,3],[2,2,3,2],[2,3,2,2],[3,2,2,2],[3,6],[6,3],[4,5],[5,4],[1,2,3,3],[1,3,2,3],[1,3,3,2],[2,1,3,3],[2,3,1,3],[2,3,3,1],[3,1,2,3],[3,1,3,2],[3,2,1,3],[3,2,3,1],[3,3,1,2],[3,3,2,1],[1,2,6],[1,6,2],[2,1,6],[2,6,1],[6,1,2],[6,2,1],[1,2,2,4],[1,2,4,2],[1,4,2,2],[2,1,2,4],[2,1,4,2],[2,2,1,4],[2,2,4,1],[2,4,1,2],[2,4,2,1],[4,1,2,2],[4,2,1,2],[4,2,2,1],[1,3,5],[1,5,3],[3,1,5],[3,5,1],[5,1,3],[5,3,1],[1,1,2,5],[1,1,5,2],[1,2,1,5],[1,2,5,1],[1,5,1,2],[1,5,2,1],[2,1,1,5],[2,1,5,1],[2,5,1,1],[5,1,1,2],[5,1,2,1],[5,2,1,1],[1,1,2,2,3],[1,1,2,3,2],[1,1,3,2,2],[1,2,1,2,3],[1,2,1,3,2],[1,2,2,1,3],[1,2,2,3,1],[1,2,3,1,2],[1,2,3,2,1],[1,3,1,2,2],[1,3,2,1,2],[1,3,2,2,1],[2,1,1,2,3],[2,1,1,3,2],[2,1,2,1,3],[2,1,2,3,1],[2,1,3,1,2],[2,1,3,2,1],[2,2,1,1,3],[2,2,1,3,1],[2,2,3,1,1],[2,3,1,1,2],[2,3,1,2,1],[2,3,2,1,1],[3,1,1,2,2],[3,1,2,1,2],[3,1,2,2,1],[3,2,1,1,2],[3,2,1,2,1],[3,2,2,1,1],[1,1,3,4],[1,1,4,3],[1,3,1,4],[1,3,4,1],[1,4,1,3],[1,4,3,1],[3,1,1,4],[3,1,4,1],[3,4,1,1],[4,1,1,3],[4,1,3,1],[4,3,1,1],[1,1,1,2,4],[1,1,1,4,2],[1,1,2,1,4],[1,1,2,4,1],[1,1,4,1,2],[1,1,4,2,1],[1,2,1,1,4],[1,2,1,4,1],[1,2,4,1,1],[1,4,1,1,2],[1,4,1,2,1],[1,4,2,1,1],[2,1,1,1,4],[2,1,1,4,1],[2,1,4,1,1],[2,4,1,1,1],[4,1,1,1,2],[4,1,1,2,1],[4,1,2,1,1],[4,2,1,1,1],[1,1,1,1,2,3],[1,1,1,1,3,2],[1,1,1,2,1,3],[1,1,1,2,3,1],[1,1,1,3,1,2],[1,1,1,3,2,1],[1,1,2,1,1,3],[1,1,2,1,3,1],[1,1,2,3,1,1],[1,1,3,1,1,2],[1,1,3,1,2,1],[1,1,3,2,1,1],[1,2,1,1,1,3],[1,2,1,1,3,1],[1,2,1,3,1,1],[1,2,3,1,1,1],[1,3,1,1,1,2],[1,3,1,1,2,1],[1,3,1,2,1,1],[1,3,2,1,1,1],[2,1,1,1,1,3],[2,1,1,1,3,1],[2,1,1,3,1,1],[2,1,3,1,1,1],[2,3,1,1,1,1],[3,1,1,1,1,2],[3,1,1,1,2,1],[3,1,1,2,1,1],[3,1,2,1,1,1],[3,2,1,1,1,1],[2,3,4],[2,4,3],[3,2,4],[3,4,2],[4,2,3],[4,3,2]]] |
