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 }