fork(3) download
  1. def dec_to_fib(n)
  2. # Minimum amount of 1s
  3. a=[1,1];a=[a[0]+a[1]]+a while a.inject(:+)<n
  4. a.inject(""){|s,c|v=(c<=n) ? 1:0;n-=c*v;s+v.to_s}
  5. end
  6.  
  7. def dec_to_fib2(n)
  8. # Maximum amount of 1s
  9. a=[1,1];a=[a[0]+a[1]]+a while a.inject(:+)<n
  10. a.inject(""){|s,c|v=(c-1<n) ? 1:0;n-=c*v;s+v.to_s}
  11. end
  12.  
  13. def fib_to_dec(s)
  14. a=[1,1];a=[a[0]+a[1]]+a while a.length<s.length
  15. (0..s.length-1).inject(0){|n,i|n+s[i].to_i*a[i]}
  16. end
  17.  
  18. for i in Array[8, 16, 32, 9024720]
  19. print i, " (minimal) -> ", dec_to_fib(i) , "\n"
  20. print i, " (maximal) -> ", dec_to_fib2(i), "\n"
  21. end
  22.  
Success #stdin #stdout 0.02s 9776KB
stdin
Standard input is empty
stdout
8 (minimal) -> 11000
8 (maximal) -> 11000
16 (minimal) -> 111000
16 (maximal) -> 111000
32 (minimal) -> 1111110
32 (maximal) -> 1111110
9024720 (minimal) -> 111111101010100000010001000010010
9024720 (maximal) -> 111111101010100000010001000010010