rubyでfixnumを74239のように[7,4,2,3,9]のような配列に変換する方法はありますか?長い固定数を配列に変換するRuby
5
A
答えて
7
:
def digits(n)
Math.log10(n).floor.downto(0).map { |i| (n/10**i) % 10 }
end
ary = digits(74239)
# [7, 4, 2, 3, 9]
n
はもちろん、n = n.abs
を必要に応じてそれを世話することができます。あなたは非正の値をカバーする必要がある場合は、:
def digits(n)
return [0] if(n == 0)
if(n < 0)
neg = true
n = n.abs
end
a = Math.log10(n).floor.downto(0).map { |i| (n/10**i) % 10 }
a[0] *= -1 if(neg)
a
end
13
5
divmodメソッドは、迅速なベンチマークは、これが使用するよりも速いことが示された時点で1
def digits n
n= n.abs
[].tap do |result|
while n > 0
n,digit = n.divmod 10
result.unshift digit
end
end
end
数字を抽出するために使用することができますログを使用して、文字列ベースの方法よりも早い数字の桁数を見つけることができます。
bmbm(5) do |x|
x.report('string') {10000.times {digits_s(rand(1000000000))}}
x.report('divmod') {10000.times {digits_divmod(rand(1000000000))}}
x.report('log') {10000.times {digits(rand(1000000000))}}
end
#=>
user system total real
string 0.120000 0.000000 0.120000 ( 0.126119)
divmod 0.030000 0.000000 0.030000 ( 0.023148)
log 0.040000 0.000000 0.040000 ( 0.045285)
4
あなたは、文字列に変換し、文字メソッドを使用することができます。
74239.to_s.chars.map(&:to_i)
出力:分割より
[7, 4, 2, 3, 9]
そのもう少しエレガント。
1
またmap
の代わりにArray.new
を使用することができます。
n = 74239
s = Math.log10(n).to_i + 1 # Gets the size of n
Array.new(s) { d = n % 10; n = n/10; d }.reverse
1
はルビー2.4では、整数はdigits methodを持つことになります。
関連する問題
- 1. 固定長のビット配列の配列
- 2. 固定長フィールドの可変長配列によるメッセージの解析
- 3. ルビーで固定長で配列
- 4. ruby配列をC配列にRubyInlineで変換するには?
- 5. 長い配列を文字列配列に変換するには?
- 6. リファクタリングRuby:文字配列をint配列に変換する
- 7. 固定長テキストファイルをSQLに変換する
- 8. 長い文字列を固定配列の項目に分割する方法
- 9. Go文字列を固定サイズのバイト配列に変換する
- 10. 配列を文字列に変換する配列を変換する関数
- 11. 固定長の多次元配列の引数
- 12. ruby on ruby:イメージファイルをバイト配列に変換する
- 13. Rubyで配列の要素の固定数を設定する方法
- 14. ruby配列を文字列に変換する(逆の場合)
- 15. 長い定数バイト配列の宣言
- 16. 長い配列をバイト配列に変換して別の配列に追加する
- 17. Rubyで配列の配列を文字列から浮動小数点に変換するには?
- 18. 整数配列をPythonでバイナリ配列に変換する
- 19. 固有アフィン変換を固有アイソメトリ変換に変換する
- 20. 可変長の以前のデータの残りを固定長配列で除外する
- 21. 固定長intポインタへのC#バイト配列
- 22. PHP - mysqlの結果の配列をローカル変数配列に変換する?
- 23. 配列(配列形式)を配列に変換する - PHP
- 24. Rubyで配列内の配列数を数えるには?
- 25. 固定長ハッシュ
- 26. Rubyシンボルを整数に変換する
- 27. 固定サイズの配列が固定されていません
- 28. Rubyで文字列を整数に変換する方法
- 29. 置換するアイテムのR個の配列の配列が置換の長さの倍数でない
- 30. 配列を別の引数文字列に変換する
かなり畳み込まれているようです。 –
@RyanBigg:あなたの高校の数学を忘れた場合にのみ。 –