Pathologically Eclectic Rubbish Lister PerlMonks

### Re: Divide array of integers into most similar value halves

by johndageek (Hermit)
 on Sep 02, 2008 at 14:38 UTC Need Help??

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";

Enjoy!
Dageek

Replies are listed 'Best First'.
Re^2: Divide array of integers into most similar value halves
by Pepe (Sexton) on Sep 02, 2008 at 18:42 UTC
Dageek,

this is a great idea!!! I'm gonna try it.
By adding the next value to the smallest group the result should be close to optimum.
Also simple and fast

Thanks a lot
Pepe
It'll fail for e.g. (3,3,2,2,2) and other sets where the top two numbers are odd, the rest even, and the ideal split is even. (and other cases too, e.g. (10,10,4,4,4,4,4))
You're right bduggan,
Although it may be close enough for me
Excellent point! Thanks!

Enjoy!
Dageek

Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://708501]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (3)
As of 2024-09-07 23:42 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?

No recent polls found

Notices?
 • erzuuli ‥ 🛈The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.