aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-05-13 13:14:22 +0100
committerGitHub <noreply@github.com>2025-05-13 13:14:22 +0100
commit52f672b168abfa013421024f26e3175eb3994660 (patch)
tree33dea79f78f6115730c0ed29b310251b3457f296
parent62f1ccaddfc5a65501df9cfdf528d28927fef410 (diff)
parentaf73e1c6b671bf8a0eb6e824bd0fb66330800c54 (diff)
downloadperlweeklychallenge-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.raku35
-rw-r--r--challenge-321/mark-anderson/raku/ch-2.raku21
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)
+}