Jsut my simple attempt:
#!/usr/bin/perl
## arrays to test
#@aoi = (1,33,2,5,6,2,9999,1,555,333,654,8,1,234,0,765,2,3,446,753);
#@aoi = (1,33,2,5,6,2,999,1,555,333,654,8,1,234,0,765,2,3,446,753);
#@aoi = (1,1,33,2,5,6,2,999,1,555,333,654,8,1,234,0,765,2,3,446,753);
#@aoi = (1,1,33,2,5,6,2,999,8,1,555,333,654,8,1,234,0,765,2,3,446,753)
+;
@aoi = (2406,1,1,33,2,5,6,2,999,8,1,555,333,654,8,1,234,0,765,2,3,446,
+753);
# working variables
@arr1 = ();
$sum1 = 0;
@arr2=();
$sum2 = 0;
# sort list
@saoi = sort { $a <=> $b} @aoi;
## start with highest value working downwards, pushing onto array cont
+aining
## the lowest sum. SHould give you the least available difference betw
+een array sums
for ($t=$#saoi;$t>-1;$t--){
if ($sum2 > $sum1){
$sum1 = $sum1 + $saoi[$t];
push @arr1,$saoi[$t];
}else{
$sum2 = $sum2 + $saoi[$t];
push @arr2,$saoi[$t];
}
}
$diff = $sum2 - $sum1;
print "$sum2 - $sum1 = $diff\n";