From fc216cdb4be9bc9831c211aaede270bc5176e817 Mon Sep 17 00:00:00 2001 From: brtastic Date: Sat, 5 Jun 2021 14:51:26 +0200 Subject: Challenge 115-2 solution by brtastic --- challenge-115/brtastic/perl/ch-2.pl | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 challenge-115/brtastic/perl/ch-2.pl diff --git a/challenge-115/brtastic/perl/ch-2.pl b/challenge-115/brtastic/perl/ch-2.pl new file mode 100644 index 0000000000..28a2ce48bf --- /dev/null +++ b/challenge-115/brtastic/perl/ch-2.pl @@ -0,0 +1,34 @@ +use v5.34; +use warnings; + +use List::Util qw(first); + +sub largest_multiple +{ + my @digits = @_; + + my @sorted_asc = sort { $a <=> $b } @digits; + my $smallest_index = first { $sorted_asc[$_] % 2 == 0 } keys @sorted_asc; + + die 'no result divisible by 2 can be achieved' + unless defined $smallest_index; + + my $smallest = splice @sorted_asc, $smallest_index, 1; + return join '', reverse(@sorted_asc), $smallest; + +} + +use Test::More; + +is largest_multiple(1, 0, 2, 6), 6210; +is largest_multiple(1, 4, 2, 8), 8412; +is largest_multiple(4, 1, 7, 6), 7614; +is largest_multiple(1, 2, 3, 4, 5, 6, 7, 8, 9, 0), 9876543210; + +# this will throw +eval { + largest_multiple(1, 1, 1, 1, 3); + fail; +}; + +done_testing; -- cgit