如何在ruby中构建此序列?
{
"0" => "00000",
"1" => "00001",
"2" => "00002",
"3" => "00003",
"4" => "00010",
"5" => "00011",
"6" => "00012",
....
"1020" => "33330",
"1021" => "33331",
"1022" => "33332",
"1023" => "33333"
}
答案 0 :(得分:2)
你可以这样做:
nums = Hash.new
0.upto(1023){ |x| nums[x] = x.to_s(4) }
puts nums
基本上Fixnum.to_s(4)会将您的基数为10的数字转换为基数。
更新 - 作为单线
如果你想要一个班轮,你可以这样做:
puts (0..1023).inject({}){ |hash, e| hash[e] = e.to_s(4); hash }
答案 1 :(得分:1)
nums = Hash.new { |h, k| "%05d" % Integer( k ).to_s( 4 ) rescue nil }
答案 2 :(得分:0)
Hash[1024.times.map {|n| [n.to_s, format('%05d', n.to_s(4))] }]
答案 3 :(得分:0)
鉴于总体规律性,我认为你不应该把它作为哈希。相反,你应该有一个方法来做它。
class String
def quaternary
to_i.tap{|i| return unless 0 <= i and i <= 1023}.to_s(4).rjust(5, "0")
end
end
"5".quarternary # = > "00011"