将一个Ruby数组的元素分成一个精确数量的(几乎)相等大小的子数组

10 浏览
0 Comments

将一个Ruby数组的元素分成一个精确数量的(几乎)相等大小的子数组

我需要一种方法将一个数组分割成大致相等大小的精确数量的小数组。有人知道如何做吗?

例如:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

groups = a.method_i_need(3)

groups.inspect

=> [[1,2,3,4,5], [6,7,8,9], [10,11,12,13]]

请注意,这是一个完全不同的问题,与将数组分成块不同,因为a.each_slice(3).to_a会产生5个组(不是我们想要的3个),并且最后一个组的大小可能与其他组完全不同:

[[1,2,3], [4,5,6], [7,8,9], [10,11,12], [13]] # 这不是我们想要的结果。

在这个问题中,所需的块数量是预先指定的,并且每个块的大小最多相差1个元素。

0
0 Comments

问题的出现原因是因为需要将一个Ruby数组分割成几乎相等大小的子数组。

解决方法是使用Rails中的in_groups_of方法。这个方法是Rails中的一个特定方法,可以将数组分成指定大小的子数组。在Rails中,这个方法可以直接使用。在其他地方使用Ruby的话,可以使用下面的解决方法。

解决方法是使用in_groups_of(3, false),其中3是指定的子数组大小,false是指定的填充值。如果数组的大小不能被指定的大小整除,填充值将会被用来填充子数组中的空位。

需要注意的是,in_groups_of方法只在Rails的Array类中可用。如果想要在其他地方使用这个方法,需要引入Rails的ActiveSupport库。

总结一下,要将一个Ruby数组分割成几乎相等大小的子数组,可以使用Rails中的in_groups_of方法,或者在其他地方使用下面的解决方法:a.in_groups_of(3, false)

0
0 Comments

问题的出现原因是希望将一个Ruby数组分成几个几乎相等大小的子数组,而不管每个组的大小如何,而不是像之前的答案所做的那样将其分成N组。为了解决这个问题,可以使用Rails(ActiveSupport)中的in_groups方法,该方法可以将数组分成指定数量的子数组。如果没有Rails的情况下,可以通过添加一个简单的方法来实现相似的结果。这个方法的唯一区别是它不会将“空白空间”均匀分布在所有组中,除了最后一个组外,其他组的大小都相等,而最后一个组总是包含剩余的元素和所有的“空白空间”。

更新后的方法可以解决在原始方法中可能出现的问题,即创建多个“空组”并将它们排除在外的问题。这个更新后的方法将多余的元素均匀分布在所需的组数中。

以上是对问题出现原因以及解决方法的整理。

0
0 Comments

问题的出现原因是用户想要将一个Ruby数组分成几个(几乎)相等大小的子数组。用户提供了一个方法Enumerable#each_slice来解决这个问题。

解决方法是使用Enumerable#each_slice方法,该方法可以将数组分成指定大小的子数组。用户提供了一个示例代码,首先将数组a使用each_slice方法分成大小为3的子数组,然后使用to_a方法转换为数组形式。最终的结果是[[0, 1, 2], [3, 4, 5], [6, 7]]

用户提到了一个注意事项,即这种方法将数组分成大小为3的子组,而不是分成3个相等大小的组。

如果数组的大小不能被分割成完全相等的子数组,用户想知道是否可以将剩余的子数组合并到前一个子数组中。用户提供了一个例子,即将[6, 7]合并到[3, 4, 5]中,形成[3, 4, 5, 6, 7]

用户提到了文档网站的用户体验不好,有时候更容易通过搜索实现想要的功能,而不是知道哪个类具有所需的方法。用户认为搜索引擎和Stack Overflow是解决问题的好工具。他们指出,有很多新手和不熟悉特定语言的程序员使用这些工具。用户认为技能是一个金字塔,新手比专家更多。

用户提出了将Ruby数组分割成几个(几乎)相等大小的子数组的问题,并提供了使用Enumerable#each_slice方法解决这个问题的方法。用户还提到了文档网站的用户体验和搜索引擎的重要性。

0