我不知道如何用正确的数学术语来描述这个。考虑一种接受两个数字的方法:
def num_of_sum(total, group_count)
end
其中total
是一个整数,group_count
也是一个整数。
我该如何获得一个“漂亮地”分组的整数数组,每个组长度为group_count
,并且总和等于total
。
我的规范应该如下:
describe "number to sum of" do
it "grabs all numbers" do
expect(num_of_sum(10, 2)).to eq([5,5])
expect(num_of_sum(10, 3)).to eq([3,3,4])
expect(num_of_sum(20, 3)).to eq([6,7,7])
expect(num_of_sum(100, 3)).to eq([33,33,34])
expect(num_of_sum(100, 2)).to eq([50,50])
end
end
我尝试了这个,它可行:
def num_of_sum(total, in_groups_of)
result = []
section_count ||= (total.to_f / in_groups_of.to_f).round
while(total > 0)
total -= section_count
if (total - section_count) < 0 && (total + section_count).even?
section_count += total
total -= total
end
result << section_count
end
result
end
但是,例如,这个规范不起作用:
expect(num_of_sum(67,5)).to eq([13,13,13,14,14])
我希望数组中的数字尽可能接近,但是该数组受
group_count
长度的限制。
有人知道这个数学名字吗,这样我就可以更准确地搜索了吗?