gpt4 book ai didi

ruby-on-rails - Ruby "bucketize"一个数组

转载 作者:数据小太阳 更新时间:2023-10-29 07:50:26 25 4
gpt4 key购买 nike

假设我有以下数组:

a = (1..10).to_a

是否有一个内置的 ruby​​(或 rails)函数能够在保持顺序的同时将数组拆分为大致相等的 N 个部分?

我正在寻找这样的东西:

a.bucketize(3)
=> [[1,2,3,4],[5,6,7],[8,9,10]]
a.bucketize(5)
=> [[1,2],[3,4],[5,6],[7,8],[9,10]]

提示:each_slice 不会这样做。

此外,我知道我可以自己编写此函数并打开 Array 类或 Enumerable 模块。

谢谢。

最佳答案

我会这样做:

ary = (1..10).to_a

ary.each_slice((ary.length.to_f/3).ceil).to_a
=> [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10]]

ary.each_slice((ary.length.to_f/5).ceil).to_a
=> [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]

它并不完美,但确实接近:

ary = (1..9).to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9]

ary.each_slice((ary.length.to_f/2).ceil).to_a
=> [[1, 2, 3, 4, 5], [6, 7, 8, 9]]

ary.each_slice((ary.length.to_f/3).ceil).to_a
=> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

ary.each_slice((ary.length.to_f/4).ceil).to_a
=> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

关于ruby-on-rails - Ruby "bucketize"一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14076354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com