diff options
| -rwxr-xr-x | challenge-124/stuart-little/perl/ch-1.pl | 26 | ||||
| -rwxr-xr-x | challenge-124/stuart-little/perl/ch-2.pl | 22 |
2 files changed, 48 insertions, 0 deletions
diff --git a/challenge-124/stuart-little/perl/ch-1.pl b/challenge-124/stuart-little/perl/ch-1.pl new file mode 100755 index 0000000000..36e1931171 --- /dev/null +++ b/challenge-124/stuart-little/perl/ch-1.pl @@ -0,0 +1,26 @@ +#!/usr/bin/env perl +use warnings; +use v5.12; + +# run <script> + +my $msg = <<"EOF"; + ^^^^^ + ^ ^ + ^ ^ + ^ ^ + ^ ^ + ^ ^ + ^ ^ + ^ ^ + ^ ^ + ^ ^ + ^^^^^ + ^ + ^ + ^ + ^^^^^ + ^ + ^ +EOF +say $msg; diff --git a/challenge-124/stuart-little/perl/ch-2.pl b/challenge-124/stuart-little/perl/ch-2.pl new file mode 100755 index 0000000000..8626ddbc13 --- /dev/null +++ b/challenge-124/stuart-little/perl/ch-2.pl @@ -0,0 +1,22 @@ +#!/usr/bin/env perl +use warnings; +use v5.12; + +# run <script> <space-separated numbers> + +use feature qw(signatures); +no warnings qw(experimental::signatures); + +use Data::PowerSet qw(powerset); +use List::AllUtils qw(sum0 min_by); +use Set::Scalar; + +sub splt($ar) { + my $powerSet = powerset({min => int(scalar @{$ar}/2), max => int(scalar @{$ar}/2)}, @{$ar}); + my $set = Set::Scalar->new(@{$ar}); + return min_by {abs((sum0 @{$_->[0]}) - (sum0 @{$_->[1]}))} map {my @diff = $set->difference(Set::Scalar->new(@{$_}))->members; [$_, \@diff]} @{$powerSet}; +} + +my $splt = splt(\@ARGV); +say "@{$splt->[0]}"; +say "@{$splt->[1]}"; |
