2 changed files with 72 additions and 3 deletions
@ -0,0 +1,43 @@
@@ -0,0 +1,43 @@
|
||||
use 5.20.0; |
||||
|
||||
my @gifts = map { 0+$_} <>; |
||||
|
||||
use List::AllUtils qw/ sum product min /; |
||||
|
||||
my $goal = sum(@gifts)/4; |
||||
|
||||
use experimental qw/ signatures postderef /; |
||||
|
||||
use DDP; |
||||
|
||||
my @min = ( 1 ) x $goal; |
||||
my $min = 1E99; |
||||
|
||||
aggregate( \@gifts, $goal ); |
||||
|
||||
|
||||
sub aggregate($gifts,$goal,@sofar) { |
||||
use DDP; |
||||
# p @_; |
||||
|
||||
return if $goal < 0; |
||||
|
||||
return if @sofar > @min; |
||||
return if product(@sofar) > $min; |
||||
|
||||
if($goal == 0) { |
||||
@min = @sofar; |
||||
$min = product(@min); |
||||
say $min; |
||||
return; |
||||
} |
||||
|
||||
return unless @$gifts; |
||||
|
||||
my( $i, @gifts) = @$gifts; |
||||
|
||||
aggregate( \@gifts, $goal - $i, @sofar, $i ); |
||||
aggregate( \@gifts, $goal, @sofar ); |
||||
|
||||
} |
||||
|
Loading…
Reference in new issue