diff options
| author | brtastic <brtastic.dev@gmail.com> | 2021-06-05 14:51:26 +0200 |
|---|---|---|
| committer | brtastic <brtastic.dev@gmail.com> | 2021-06-05 14:51:26 +0200 |
| commit | fc216cdb4be9bc9831c211aaede270bc5176e817 (patch) | |
| tree | ec8a2ad89d1d5fe5cf464c472e5fc619050457a2 | |
| parent | be4538eab6cd1a2f7ec0588d038659d1fe79e219 (diff) | |
| download | perlweeklychallenge-club-fc216cdb4be9bc9831c211aaede270bc5176e817.tar.gz perlweeklychallenge-club-fc216cdb4be9bc9831c211aaede270bc5176e817.tar.bz2 perlweeklychallenge-club-fc216cdb4be9bc9831c211aaede270bc5176e817.zip | |
Challenge 115-2 solution by brtastic
| -rw-r--r-- | challenge-115/brtastic/perl/ch-2.pl | 34 |
1 files changed, 34 insertions, 0 deletions
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; |
