arrays - 将数组拆分为 x 个数组

标签 arrays ruby sorting

我有一个数组:

arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

我想将 arr1 分成 x 个切片,其中每个切片尽可能完整且相等。

arr2  = arr1.foo(3)
# => [1, 2, 3, 4][5, 6, 7][8, 9, 10]

each_slice 做的与我想要的相反,而是将数组分成 x 个元素组。

arr2 = arr1.each_slice(3)
# => [1, 2, 3][4, 5, 6][7, 8, 9][10]

如果可能,我想在不使用特定于 Rails 的方法(如 in_groups)的情况下执行此操作。

最佳答案

class Array
  def in_groups(n)
    len, rem = count.divmod(n)
    (0...n).map { | i | (i < rem) ? self[(len+1) * i, len + 1] : self[len * i + rem, len] }
  end
end

关于arrays - 将数组拆分为 x 个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31402582/

相关文章:

Ruby 一次只创建 3 个线程

c++ - 如何找到给定数组中数字之间的最大乘法(限制为 100000 个数字)

ruby - jekyll - 插件支持 - 它是如何工作的?

arrays - 获取相同键的值

c++ - 在 C++ 中使用 'cin' 使数组与输入一样大

java - 二维阵列战舰放置随机船只

ruby-on-rails - rake 数据库 :migrate not working on my postgres db

python-3.x - 属性错误: Python 'filter' object has no attribute 'sort'

php - 选择/排序算法(背包)

javascript - 如何使用 match() 分割数组中的行?