fib = ->a, b {Enumerator.new {|y| loop {y << a; a, b = b, a + b}}}
f = ->a, b, c {fib.(a, b).take_while(&c.method(:>=)).find_index(c)}
p (1..5).map {|c| [c, f.(1, 1, c)]}
ZmliID0gLT5hLCBiIHtFbnVtZXJhdG9yLm5ldyB7fHl8IGxvb3Age3kgPDwgYTsgYSwgYiA9IGIsIGEgKyBifX19CmYgPSAtPmEsIGIsIGMge2ZpYi4oYSwgYikudGFrZV93aGlsZSgmYy5tZXRob2QoOj49KSkuZmluZF9pbmRleChjKX0KcCAoMS4uNSkubWFwIHt8Y3wgW2MsIGYuKDEsIDEsIGMpXX0K
[[1, 0], [2, 2], [3, 3], [4, nil], [5, 4]]