Ruby转VB.NET代码求助:将数字拆分为尽可能均等的部分
数字均等拆分的Ruby转VB.NET实现
原Ruby代码逻辑解析
先拆解下你找到的Ruby代码逻辑,搞懂了就好转换:
n/p是整数除法(舍去小数部分),比如32除以3得到10n%p是取余数,32除以3余2,意味着需要有2个元素是n/p + 1(也就是11)p - n%p是剩下的元素数量,3-2=1,这部分元素直接用n/p(也就是10)- 最后把这两组数拼接起来,就得到了最均等的拆分结果
VB.NET实现代码
Function SplitInto(n As Integer, p As Integer) As Integer() Dim baseNum = n \ p Dim remainder = n Mod p ' 生成余数个数的baseNum+1数组 Dim part1 = Enumerable.Repeat(baseNum + 1, remainder).ToArray() ' 生成剩余个数的baseNum数组 Dim part2 = Enumerable.Repeat(baseNum, p - remainder).ToArray() ' 合并两个数组返回 Return part1.Concat(part2).ToArray() End Function ' 测试示例 Dim result = SplitInto(32, 3) ' 输出结果:11 11 10 For Each num In result Console.Write(num & " ") Next
说明
- VB.NET中用
\做整数除法(对应Ruby的n/p),Mod取余数(对应Ruby的n%p) - 用
Enumerable.Repeat批量生成重复元素的数组,再通过Concat完成数组拼接,和原Ruby代码逻辑完全一致
内容的提问来源于stack exchange,提问作者kick
相关产品推荐
相关产品推荐

