2012-09-13 3 views

답변

2

당신은 할 수 있습니다 :

nums = Hash.new 
0.upto(1023){ |x| nums[x] = x.to_s(4) } 
puts nums 

기본적으로 Fixnum.to_s (4) 기지 (10) 수를 변환합니다 기반이 4

업데이트 - 한 라이너

으로

하나의 라이너가 필요한 경우 다음을 할 수 있습니다.

puts (0..1023).inject({}){ |hash, e| hash[e] = e.to_s(4); hash } 
총 규칙을 감안할 때
+0

감사합니다. 그것의 일 ... 대답을 수락하기 위해 9 분을 기다려라.) –

1
nums = Hash.new { |h, k| "%05d" % Integer(k).to_s(4) rescue nil } 
0
Hash[1024.times.map {|n| [n.to_s, format('%05d', n.to_s(4))] }] 
+0

1시에 시작하는 이유는 무엇입니까? – sawa

+0

그건 오타였습니다. –

0

16,는, 나는 당신이 해시로 그 유지해야한다고 생각하지 않습니다. 오히려 방법을 사용해야합니다.

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"