0

係数 19 の 100,000 未満のすべての数値の配列。テスト済み、動作中。

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 }

したがって、最後にすべてを1行で実行できます:)

(19..100000).step(19).select {|num| num.to_s == num.to_s.reverse }
于 2013-02-06T23:33:01.197 に答える