数组中有1到100个奇数

时间:2012-11-25 10:10:54

标签: ruby

在Ruby中有没有很酷的方法来创建一个1到100的数组,只有奇数条目(1,3等)。我现在有一个循环,但这显然不是一个很酷的方式来做到这一点!有什么建议吗?

我目前的代码:

def create_1_to_100_odd_array
    array = [1]
    i = 3
    while i < 100
        array.push i
        i += 2
    end

    array
end

提前致谢

6 个答案:

答案 0 :(得分:39)

Range类为此目的提供了一个非常酷的功能:

1.9.3-p286 :005 > (1..10).step(2).to_a
 => [1, 3, 5, 7, 9] 

答案 1 :(得分:14)

可能效率不高,但只是一小段代码:

(1..100).select(&:odd?)

# => [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]

答案 2 :(得分:5)

只是玩弄...

(0...50).map(&:object_id)
#or
1.step(100,2).to_a

答案 3 :(得分:3)

由于您需要一个功能,所以:

def odd_to(n)
    (1..n).step(2).to_a
end

答案 4 :(得分:2)

不是很有效的解决方案,但相当优雅:

(1..100).select {|a| a%2 != 0}

答案 5 :(得分:1)

当您实例化数组时,可以将其作为单行代码执行:

def create_array_of_odds_to(n)
  Array.new((n + 1) / 2) {|i| 2 * i + 1}
end

create_array_of_odds_to 10   # => [1, 3, 5, 7, 9]