aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Anderson <mark@andemark.io>2025-05-12 05:41:00 +0000
committerMark Anderson <mark@andemark.io>2025-05-12 05:41:00 +0000
commit6ca51769a6a49f7eb63ef2ab8c62be796a16586a (patch)
tree5e9eaf8ebc5147b049554777ef4e99df28d8cb2c
parent62f1ccaddfc5a65501df9cfdf528d28927fef410 (diff)
downloadperlweeklychallenge-club-6ca51769a6a49f7eb63ef2ab8c62be796a16586a.tar.gz
perlweeklychallenge-club-6ca51769a6a49f7eb63ef2ab8c62be796a16586a.tar.bz2
perlweeklychallenge-club-6ca51769a6a49f7eb63ef2ab8c62be796a16586a.zip
Challenge 321 Solutions (Raku)
-rw-r--r--challenge-321/mark-anderson/raku/ch-1.raku19
-rw-r--r--challenge-321/mark-anderson/raku/ch-2.raku21
2 files changed, 40 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..3998ef3278
--- /dev/null
+++ b/challenge-321/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,19 @@
+#!/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;
+
+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
+ })
+}
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..868246f543
--- /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)
+}