diff options
| author | Daniel Mita <mienaikage@gmail.com> | 2020-10-25 22:29:36 +0000 |
|---|---|---|
| committer | Daniel Mita <mienaikage@gmail.com> | 2020-10-25 22:29:36 +0000 |
| commit | 8e1cfd624b4a8452e4e57d72448adc688682fdbb (patch) | |
| tree | 57e21190047fac174812b9768361cdd839281de8 /challenge-083/daniel-mita | |
| parent | 4928284eb30cf4ad0a895575017ce83dc220b0c2 (diff) | |
| download | perlweeklychallenge-club-8e1cfd624b4a8452e4e57d72448adc688682fdbb.tar.gz perlweeklychallenge-club-8e1cfd624b4a8452e4e57d72448adc688682fdbb.tar.bz2 perlweeklychallenge-club-8e1cfd624b4a8452e4e57d72448adc688682fdbb.zip | |
Add solution for challenge-083-2 in Perl
Diffstat (limited to 'challenge-083/daniel-mita')
| -rwxr-xr-x | challenge-083/daniel-mita/perl/ch-2.pl | 27 | ||||
| -rwxr-xr-x | challenge-083/daniel-mita/raku/ch-2.raku | 6 |
2 files changed, 30 insertions, 3 deletions
diff --git a/challenge-083/daniel-mita/perl/ch-2.pl b/challenge-083/daniel-mita/perl/ch-2.pl new file mode 100755 index 0000000000..9883d94635 --- /dev/null +++ b/challenge-083/daniel-mita/perl/ch-2.pl @@ -0,0 +1,27 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use feature qw<say>; + +use List::Util qw<sum>; +use Scalar::Util qw<looks_like_number>; + +if ( @ARGV == 0 || grep { !looks_like_number($_) || $_ < 1 } @ARGV ) { + say 'List of positive numbers required.'; + exit 1; +} + +my @combinations; +for ( my $i = 0; $i < @ARGV; $i++ ) { + for ( my $j = $i; $j < @ARGV; $j++ ) { + push @combinations, [ @ARGV[ $i .. $j ] ]; + } +} + +say scalar( + @{ [ sort { sum( @{$b} ) <=> sum( @{$a} ) || @{$a} <=> @{$b} } + grep { sum( @{$_} ) <= sum(@ARGV) / 2 } @combinations + ]->[0] + } +); diff --git a/challenge-083/daniel-mita/raku/ch-2.raku b/challenge-083/daniel-mita/raku/ch-2.raku index ed5730718d..3c72a13df6 100755 --- a/challenge-083/daniel-mita/raku/ch-2.raku +++ b/challenge-083/daniel-mita/raku/ch-2.raku @@ -1,12 +1,12 @@ #!/usr/bin/env raku sub MAIN( - *@positive-ints where { .elems > 0 && .all ~~ Int && .all > 0 } + *@positive-nums where { .elems > 0 && .all.Rat && .all > 0 } --> Nil ) { @( - @positive-ints.combinations(1..*) - .grep( *.sum ≤ @positive-ints.sum / 2 ) + @positive-nums.combinations(1..*) + .grep( *.sum ≤ @positive-nums.sum / 2 ) .sort({ $^b.sum <=> $^a.sum || $a.elems <=> $b.elems }) )[0].elems.say; } |
