diff options
| -rw-r--r-- | challenge-242/mark-anderson/raku/ch-1.raku | 12 | ||||
| -rw-r--r-- | challenge-242/mark-anderson/raku/ch-2.raku | 35 |
2 files changed, 47 insertions, 0 deletions
diff --git a/challenge-242/mark-anderson/raku/ch-1.raku b/challenge-242/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..145d04bdc5 --- /dev/null +++ b/challenge-242/mark-anderson/raku/ch-1.raku @@ -0,0 +1,12 @@ +#!/usr/bin/env raku +use Test; + +is-deeply missing-members([1,2,3], [2,4,6]), ([1,3], [4,6]); +is-deeply missing-members([1,2,3,3], [1,1,2,2]), ([3],); + +sub missing-members(@a, @b) +{ + # @a (^) @b gives the result in 1 list so I'm doing it like this 🤷 + + grep { .Bool }, ((@a (-) @b), (@b (-) @a))>>.keys>>.sort>>.Array +} diff --git a/challenge-242/mark-anderson/raku/ch-2.raku b/challenge-242/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..83a75674b6 --- /dev/null +++ b/challenge-242/mark-anderson/raku/ch-2.raku @@ -0,0 +1,35 @@ +#!/usr/bin/env raku +use Test; +use Benchy; + +is-deeply flip-matrix(<1 1 0>, <1 0 1>, <0 0 0>), + ((1,0,0), (0,1,0), (1,1,1))>>.Seq; + +is-deeply flip-matrix(<1 1 0 0>, <1 0 0 1>, <0 1 1 1>, <1 0 1 0>), + ((1,1,0,0), (0,1,1,0), (0,0,0,1), (1,0,1,0))>>.Seq; + +benchmark(); + +sub flip-matrix(+@m) +{ + map -> $r { map -> $c { @m[$r;$c] +^ 1 }, (@m.end...0) }, ^@m +} + +sub flip-matrix-slow(+@m) +{ + map { reverse $_ >>+^>> 1 }, @m + + # no difference in time + # map { .[.end...0] >>+^>> 1 }, @m +} + +sub benchmark +{ + my @m = map { (0,1).roll(100_000) }, ^100_000; + + b 10, { flip-matrix-slow(@m) }, { flip-matrix(@m) } + + # Old: 3.332146938s + # New: 0.8259856s + # NEW version is 4.03x faster +} |
