所有数字小于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的新手,但我可以发誓这会起作用!
答案 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 }