Calkin-Wilf sequence: Difference between revisions

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]
1,149

edits