BrowserUk has asked for the wisdom of the Perl Monks concerning the following question:
My brain's not working this morning.
I want to integer divide N by M such that there is the minimal difference in the size of the M integer partitions.
Eg. 10 / 3 => 4, 3, 3 not 4,4,2.
I'm sure I've done this concisely in the past, but I'm damned if I remember how or when.
My best attempt so far is:
sub part{ my( $n, $m ) = @_; my @parts = (int( $n / $m )) x $m; $n -= $_ for @parts; my $i =0; $parts[ $i++ ]++ while $n--; return @parts; }
But it feels messy to me?
Update: And ikegami's purely numerical method is hands down winner:
Rate syp buk eli ike syp 8.36/s -- -42% -47% -74% buk 14.4/s 73% -- -8% -56% eli 15.8/s 89% 9% -- -52% ike 32.5/s 289% 125% 106% --
Thanks all.
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
Back to
Seekers of Perl Wisdom