From 634e3f9f3b2868c9fb908dd5984dc14a6591262d Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Wed, 2 Aug 2023 09:58:31 +0000 Subject: Challenge 228 Solutions (Perl and Raku) --- challenge-228/mark-anderson/perl/ch-1.pl | 17 +++++++++++++++++ challenge-228/mark-anderson/perl/ch-2.pl | 25 +++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 challenge-228/mark-anderson/perl/ch-1.pl create mode 100644 challenge-228/mark-anderson/perl/ch-2.pl 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 +} -- cgit From 5e43c4f39c15b90ee1fd43b314d12472bc066587 Mon Sep 17 00:00:00 2001 From: Mark <53903062+andemark@users.noreply.github.com> Date: Wed, 2 Aug 2023 10:29:43 +0000 Subject: Challenge 228 Solutions (Perl) --- challenge-228/mark-anderson/perl/ch-2.pl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/challenge-228/mark-anderson/perl/ch-2.pl b/challenge-228/mark-anderson/perl/ch-2.pl index 8f20366521..f5be9a5542 100644 --- a/challenge-228/mark-anderson/perl/ch-2.pl +++ b/challenge-228/mark-anderson/perl/ch-2.pl @@ -1,6 +1,6 @@ #!/usr/bin/env perl use v5.32; -use List::Util qw/min sum/; +use List::Util qw/min/; use List::MoreUtils qw/first_index/; use Test::More; use experimental qw/signatures/; @@ -12,14 +12,14 @@ done_testing; sub empty_array(@a) { - my @r; + my $total; while(@a) { my $i = first_index { $_ == min @a } @a; @a = (@a[$i+1..$#a], @a[0..$i-1]); - push @r, $i+1; + $total += $i+1 } - sum @r + $total } -- cgit