例えば10000円を支払わなければならない状況で、毎月ある金額を3ヶ月に渡って分割して支払いたいときなどは、そのまま3で割ってしまうと少数になって困ってしまいます。 そんな時のための整数分割アルゴリズムです。
以下のコードではdividend
をn
個の整数に分割します。
function partition(dividend, n){ // 整数分割アルゴリズム var base = Math.floor(dividend / n); // 最低の配当 var rem = dividend % n; // あまり var list = []; for (var i=0; i<n; i++) { list[i] = (i < rem) ? base + 1 : base; } return list; }
上の例だと以下が出力されます。
> (3) [334, 333, 333]