gpt4 book ai didi

ruby - 如何在 Ruby 中创建数字列表并将其反向附加到它

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

给定一个最小整数和最大整数,我想创建一个数组,它从最小值到最大值以二为单位计数,然后倒退(再次以二为单位,重复最大数)。

例如,如果最小数是 1,最大数是 9,我想要 [1, 3, 5, 7, 9, 9, 7, 5, 3, 1].

我试图尽可能简洁,这就是我使用单行代码的原因。

在 Python 中,我会这样做:

range(1, 10, 2) + range(9, 0, -2)

在我刚刚开始学习的 Ruby 中,到目前为止我所想到的是:

(1..9).inject([]) { |r, num| num%2 == 1 ? r << num : r }.reverse.inject([]) { |r, num| r.unshift(num).push(num) }

这行得通,但我知道必须有更好的方法。这是什么?

最佳答案

(1..9).step(2).to_a + (1..9).step(2).to_a.reverse

但会更短

Array.new(10) { |i| 2 * [i, 9-i].min + 1 }

如果我们打代码:)

关于ruby - 如何在 Ruby 中创建数字列表并将其反向附加到它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2822161/

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