diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2025-05-13 13:14:22 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-13 13:14:22 +0100 |
| commit | 52f672b168abfa013421024f26e3175eb3994660 (patch) | |
| tree | 33dea79f78f6115730c0ed29b310251b3457f296 | |
| parent | 62f1ccaddfc5a65501df9cfdf528d28927fef410 (diff) | |
| parent | af73e1c6b671bf8a0eb6e824bd0fb66330800c54 (diff) | |
| download | perlweeklychallenge-club-52f672b168abfa013421024f26e3175eb3994660.tar.gz perlweeklychallenge-club-52f672b168abfa013421024f26e3175eb3994660.tar.bz2 perlweeklychallenge-club-52f672b168abfa013421024f26e3175eb3994660.zip | |
Merge pull request #12009 from andemark/challenge-321
Challenge 321 Solutions (Raku)
| -rw-r--r-- | challenge-321/mark-anderson/raku/ch-1.raku | 35 | ||||
| -rw-r--r-- | challenge-321/mark-anderson/raku/ch-2.raku | 21 |
2 files changed, 56 insertions, 0 deletions
diff --git a/challenge-321/mark-anderson/raku/ch-1.raku b/challenge-321/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..1c9b17dda0 --- /dev/null +++ b/challenge-321/mark-anderson/raku/ch-1.raku @@ -0,0 +1,35 @@ +#!/usr/bin/env raku +use Test; + +is distinct-average(1,2,4,3,5,6), 1; +is distinct-average(0,2,4,8,3,5), 2; +is distinct-average(7,3,1,0,5,9), 2; + +=begin slow + +Yikes! I didn't realize how slow this was 😱 + +sub distinct-average(+@nums) +{ + .unique.elems given @nums.map( + { + my $min = @nums.min(:kv); + my $max = @nums.max(:kv); + + @nums[$min[0], $max[0]]:delete; + + ($min[1] + $max[1]) / 2 + }) +} + +=end slow + +sub distinct-average(+@nums) +{ + @nums .= sort; + + .unique.elems given do while @nums + { + (@nums.shift + @nums.pop) / 2 + } +} diff --git a/challenge-321/mark-anderson/raku/ch-2.raku b/challenge-321/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..b0f6053d31 --- /dev/null +++ b/challenge-321/mark-anderson/raku/ch-2.raku @@ -0,0 +1,21 @@ +#!/usr/bin/env raku +use Test; + +ok backspace-compare('ab#c', 'ad#c'); +ok backspace-compare('ab##', 'a#b#'); +nok backspace-compare('a#b', 'c'); + +sub backspace-compare($str1, $str2) +{ + sub backspace($s is copy) + { + loop + { + last unless $s ~~ s/(<lower>*)('#'+) <?{ $0.chars <= $1.chars }>// + } + + $s + } + + backspace($str1) eq backspace($str2) +} |
