如何找到Ruby数组中的所有反射(为什么我的不起作用)?

时间:2013-02-06 23:13:34

标签: ruby-on-rails ruby reverse

所有数字小于100,000的数组,系数为19.经过测试,正在使用。

S= Array.new
S[0]= 19
i= 0
while S[i]+19 < 100000 do
     i+=1
     S[i] = S[i-1]+19
 end

问题:尝试查找阵列中具有“反射”的所有数字,这些数字也在数组中。

我的尝试:

reflectionArray= Array.new
i=0

S.each do |s|
    reverse= s.to_s().reverse!
    S.each do |r|
    if (reverse == r)
        reflectionArray[i]= s
        i+=1
    end
  end
end

我期待一个所有镜像因子为19的数组,但是我收到错误。 今天是Ruby的新手,但我可以发誓这会起作用!

1 个答案:

答案 0 :(得分:1)

您的问题就在这一行

reverse= s.to_s().reverse.to_i # No need for ! and you need to convert back to a number

但你可能想这样做而不是

s = Array.new # capital variables are for class names and constantes. Btw: actually classes also are constantes
s << 19 # you don't need to use indexes at all
while s.last +19 < 100000 do
  s << s.last + 19
end

但您可以使用范围来生成数组

s = (19..100000).step(19)

要查找数组中的所有反射,您只需执行

reverse_array = s.select {|num| num.to_s == num.to_s.reverse }

所以最后你可以在一行中完成所有这些:)

(19..100000).step(19).select {|num| num.to_s == num.to_s.reverse }