我正在尝试将数字“分隔”为 X
元素。
我的意思是,如果我的数字是 12
并且我想要的元素数 (X
) 是 6
,我想为每个元素分开12/6=2
,即:
[0] = 2, [1] = 2, [2] = 2, [3] = 2, [4] = 2, [5] = 2 (Total 12)
如果我的号码是 13
那么 13/6=2.1666
在这种情况下我如何分离每个元素?即像这样:
[0] = 3, [1] = 2, [2] = 2, [3] = 2, [4] = 2, [5] = 2 (Total 13)
或者如果我的号码是 10
,10/6 = 1.66
[0] = 2, [1] = 2, [2] = 2, [3] = 2, [4] = 1, [5] = 1 (Total 10)
我该怎么做?
一种方法是:
- 创建一个长度为
numberOfParts
的数组,
- 重复
number
次,
在代码中:
private static int[] SeparateNumber(int number, int parts) {
var array = new int[parts];
int index = 0;
for (int i = 0 ; i < number ; i++) {
array[index++]++;
if (index == parts) { // end of array reached
index = 0;
}
}
return array;
}
这有点像将一副纸牌分成几叠。您将 numberOfStacks
牌发完,然后按顺序在每叠牌的顶部发牌,直到发完牌。
这是一个过程较少、功能更强大的解决方案:
private static int[] SeparateNumber(int number, int count) {
var remainder = number % count;
var quotient = number / count;
return Enumerable.Repeat(quotient + 1, remainder)
.Concat(Enumerable.Repeat(quotient, count - remainder)).ToArray();
}