gpt4 book ai didi

arrays - 如何在不枚举每个值的情况下从 Ruby 数组中选择第一个增加的值?

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

假设有一个数组,例如:

a = [0, 1, 2, 3, 4, 2, 5, 1, 7, 6, 4, 5]

有人希望创建一个由前 n 个元素组成的数组,从数组中的第一个元素开始,这是一个递增的单调序列。给定上面的 a,该数组将是 [0, 1, 2, 3, 4]

可以使用slice_when,例如:

a.slice_when { |a, b| a != b - 1 }.first

这种方法的缺点是slice_when会继续迭代数组元素2, 5, 1 以此类推,直到结束。在这种情况下,迭代剩余的值是没有用的,因为实际上只需要第一个切片。

在 Ruby 中表达这一点的优雅方式是什么,一旦选择了第一个递增序列就停止迭代?

最佳答案

惰性评估怎么样?

a = [0, 1, 2, 3, 4, 2, 5, 1, 7, 6, 4, 5]
a.lazy.slice_when { |a, b| a != b - 1 }.first
=> [0, 1, 2, 3, 4]

Enumerable#lazy

关于arrays - 如何在不枚举每个值的情况下从 Ruby 数组中选择第一个增加的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41205954/

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