diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2023-11-07 14:23:05 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-11-07 14:23:05 +0000 |
| commit | cabba3b36ab90a7022ab644f491bcb94c50d8a5c (patch) | |
| tree | 88718f05b2d948b299fd4c1529e329aab851c073 | |
| parent | a82dd587d3773d2a36a1fcc4b3c525c031433a4a (diff) | |
| parent | 8ec93be8b33fe93def163c382c67991d5b65b3a9 (diff) | |
| download | perlweeklychallenge-club-cabba3b36ab90a7022ab644f491bcb94c50d8a5c.tar.gz perlweeklychallenge-club-cabba3b36ab90a7022ab644f491bcb94c50d8a5c.tar.bz2 perlweeklychallenge-club-cabba3b36ab90a7022ab644f491bcb94c50d8a5c.zip | |
Merge pull request #9008 from andemark/challenge-242
Challenge 242 Solutions (Raku)
| -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 +} |
