Calkin-Wilf sequence: Difference between revisions
→{{header|Ruby}}: add Ruby
Alextretyak (talk | contribs) m (→{{header|11l}}) |
(→{{header|Ruby}}: add Ruby) |
||
Line 1,396:
</pre>
=={{header|Ruby}}==
{{trans|Python}}
<lang ruby>cw = Enumerator.new do |y|
y << a = 1.to_r
loop { y << a = 1/(2*a.floor + 1 -a) }
end
def term_num(rat)
num, den, res, pwr, dig = rat.numerator, rat.denominator, 0, 0, 1
while den > 0
num, (digit, den) = den, num.divmod(den)
digit.times do
res |= dig << pwr
pwr += 1
end
dig ^= 1
end
res
end
puts cw.take(20).join(", ")
puts term_num (83116/51639r)
</lang>
<pre>1/1, 1/2, 2/1, 1/3, 3/2, 2/3, 3/1, 1/4, 4/3, 3/5, 5/2, 2/5, 5/3, 3/4, 4/1, 1/5, 5/4, 4/7, 7/3, 3/8
123456789
</pre>
=={{header|Rust}}==
<lang rust>// [dependencies]
|