You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby如何实现数组尽可能均匀分割?含奇偶元素分割需求

解决Ruby数组均匀分割成两部分的问题

你可以通过计算分割中点,再结合数组切片或者each_slice来实现需求,具体方法如下:

方法1:直接切片分割

先算出分割的中点,对于奇数长度的数组,中点取(数组长度 + 1) // 2(保证前半部分比后半部分多1个元素),偶数长度则刚好是长度的一半。然后用数组切片拆分:

def split_into_two(array)
  mid_point = (array.length + 1) // 2
  [array[0...mid_point], array[mid_point..-1]]
end

# 测试示例
array = [5, 1, 3, 8, 7]
split_into_two(array)
#=> [[5, 1, 3], [8, 7]]

# 偶数长度测试
even_array = [1, 2, 3, 4]
split_into_two(even_array)
#=> [[1, 2], [3, 4]]

方法2:结合each_slice实现

如果你想用each_slice,需要先算出正确的切片长度,再转换为数组即可:

array = [5, 1, 3, 8, 7]
mid_point = (array.length + 1) // 2
array.each_slice(mid_point).to_a
#=> [[5, 1, 3], [8, 7]]

你之前用each_slice没得到预期效果,应该是直接用了array.length / 2作为切片长度(比如5个元素时是2),这样会切成多个小片段,而不是两部分。只要先算出正确的中点长度,each_slice也能满足需求。

内容的提问来源于stack exchange,提问作者Devon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 18:22:12