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



100000以下所有数字的数组,因子为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今天是新手,但我本可以发誓这会奏效的!

您的问题在这一行

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 }

最新更新