0

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 的新手,但我可以发誓这会奏效!

4

1 回答 1

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 }
于 2013-02-06T23:33:01.197 回答