fork(2) download
  1. g=lambda k:g(k%2*k/2)|g(k%3/2*-~k/3)if k>1else k
  2. f=lambda n,k=1:n and-~f(n-g(k),k+1)
  3.  
  4. for n in 1, 2, 3, 4, 5, 10, 20, 30, 55:
  5. print '%2d -> %3d' % (n, f(n))
Success #stdin #stdout 0.01s 9016KB
stdin
Standard input is empty
stdout
 1 ->   1
 2 ->   2
 3 ->   3
 4 ->   5
 5 ->   7
10 ->  17
20 ->  50
30 ->  95
55 -> 255