#!/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";
Enjoy!
Dageek
In reply to Re: Divide array of integers into most similar value halves
by johndageek
in thread Divide array of integers into most similar value halves
by Pepe
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |