次の配列を生成するためのいくつかの異なる方法を考えました。[1, 10, 100, 1_000, 10_000, 100_000, 1_000_000]
この配列をstep
関数でエレガントな方法で生成することは可能かもしれないようですが、私はそれを理解することができませんでした. 関数に 2 番目の引数を渡しstep
、最後の値の 10 倍が必要だと言うもの:
0.step(1_000_000, ???).to_a
これまでに私が思いついた解決策は次のとおりです。
上限としてinject
指定することを好むため、ソリューションはあまり好きではありません。1_000_000
(0..6).inject([]) { |memo, number| memo << 10**number; memo }
step
これは私が思いついた醜い解決策です:
result = []
0.step(6) {|number| result << 10 ** number}
result
ループも適切でwhile
はありませんが、少なくとも (Math.log10(upper_bound) の代わりに) upper_bound を指定できます。
result = [1]
while result.last < 1_000_000
result << result.last * 10
end
result
助けてくれてありがとう。