diff options
| author | Mark Anderson <mark@andemark.io> | 2025-05-12 05:41:00 +0000 |
|---|---|---|
| committer | Mark Anderson <mark@andemark.io> | 2025-05-12 05:41:00 +0000 |
| commit | 6ca51769a6a49f7eb63ef2ab8c62be796a16586a (patch) | |
| tree | 5e9eaf8ebc5147b049554777ef4e99df28d8cb2c | |
| parent | 62f1ccaddfc5a65501df9cfdf528d28927fef410 (diff) | |
| download | perlweeklychallenge-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.raku | 19 | ||||
| -rw-r--r-- | challenge-321/mark-anderson/raku/ch-2.raku | 21 |
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) +} |
