diff options
| author | Mark <53903062+andemark@users.noreply.github.com> | 2023-08-02 09:58:31 +0000 |
|---|---|---|
| committer | Mark <53903062+andemark@users.noreply.github.com> | 2023-08-02 09:58:31 +0000 |
| commit | 634e3f9f3b2868c9fb908dd5984dc14a6591262d (patch) | |
| tree | a86dd5f015343d8aed99627b26d2f3914153a200 | |
| parent | fc5cb8f9944974380ec4b67f29c2c717c5e93187 (diff) | |
| download | perlweeklychallenge-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.pl | 17 | ||||
| -rw-r--r-- | challenge-228/mark-anderson/perl/ch-2.pl | 25 |
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 +} |
