aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark <53903062+andemark@users.noreply.github.com>2023-08-02 09:58:31 +0000
committerMark <53903062+andemark@users.noreply.github.com>2023-08-02 09:58:31 +0000
commit634e3f9f3b2868c9fb908dd5984dc14a6591262d (patch)
treea86dd5f015343d8aed99627b26d2f3914153a200
parentfc5cb8f9944974380ec4b67f29c2c717c5e93187 (diff)
downloadperlweeklychallenge-club-634e3f9f3b2868c9fb908dd5984dc14a6591262d.tar.gz
perlweeklychallenge-club-634e3f9f3b2868c9fb908dd5984dc14a6591262d.tar.bz2
perlweeklychallenge-club-634e3f9f3b2868c9fb908dd5984dc14a6591262d.zip
Challenge 228 Solutions (Perl and Raku)
-rw-r--r--challenge-228/mark-anderson/perl/ch-1.pl17
-rw-r--r--challenge-228/mark-anderson/perl/ch-2.pl25
2 files changed, 42 insertions, 0 deletions
diff --git a/challenge-228/mark-anderson/perl/ch-1.pl b/challenge-228/mark-anderson/perl/ch-1.pl
new file mode 100644
index 0000000000..3e5bc20ff8
--- /dev/null
+++ b/challenge-228/mark-anderson/perl/ch-1.pl
@@ -0,0 +1,17 @@
+#!/usr/bin/env perl
+use v5.32;
+use List::Util qw/sum0/;
+use Test::More;
+use experimental qw/signatures/;
+
+is unique_sum(2,1,3,2), 4;
+is unique_sum(1,1,1,1), 0;
+is unique_sum(2,1,3,4), 10;
+done_testing;
+
+sub unique_sum(@a)
+{
+ my %bag;
+ $bag{$_}++ for @a;
+ sum0 grep { $bag{$_} == 1 } keys %bag
+}
diff --git a/challenge-228/mark-anderson/perl/ch-2.pl b/challenge-228/mark-anderson/perl/ch-2.pl
new file mode 100644
index 0000000000..8f20366521
--- /dev/null
+++ b/challenge-228/mark-anderson/perl/ch-2.pl
@@ -0,0 +1,25 @@
+#!/usr/bin/env perl
+use v5.32;
+use List::Util qw/min sum/;
+use List::MoreUtils qw/first_index/;
+use Test::More;
+use experimental qw/signatures/;
+
+is empty_array(3,4,2), 5;
+is empty_array(1,2,3), 3;
+is empty_array(16,17,8,15,13,11,19,5,12,6,20,2,4,10,3,14,1,7,9,18), 127;
+done_testing;
+
+sub empty_array(@a)
+{
+ my @r;
+
+ while(@a)
+ {
+ my $i = first_index { $_ == min @a } @a;
+ @a = (@a[$i+1..$#a], @a[0..$i-1]);
+ push @r, $i+1;
+ }
+
+ sum @r
+}