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.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Near equal partitions.
by ikegami (Patriarch) on Jan 14, 2011 at 05:14 UTC | |
by ELISHEVA (Prior) on Jan 14, 2011 at 05:44 UTC | |
by ikegami (Patriarch) on Jan 14, 2011 at 05:53 UTC | |
by happy.barney (Friar) on Jan 14, 2011 at 07:24 UTC | |
by JavaFan (Canon) on Jan 14, 2011 at 09:40 UTC | |
| |
Re: Near equal partitions.
by ELISHEVA (Prior) on Jan 14, 2011 at 04:58 UTC | |
by ELISHEVA (Prior) on Jan 14, 2011 at 07:17 UTC | |
by BrowserUk (Patriarch) on Jan 14, 2011 at 07:45 UTC | |
Re: Near equal partitions.
by syphilis (Archbishop) on Jan 14, 2011 at 05:14 UTC | |
Re: Near equal partitions.
by nif (Sexton) on Jan 14, 2011 at 16:55 UTC |
Back to
Seekers of Perl Wisdom