One of these days I'll remember that you have to say
range(start,end-1,-1) not range(start,end,-1) to iterate down
to and including 'end' in Python.
return (m, 1, {(m,):n}, {(m,)*(n/m):m})
best = (0,)
for d in xrange(1, n+1):
- for k in xrange(m*d/2, int(math.ceil(best[0]*d)), -1):
+ for k in xrange(m*d/2, int(math.ceil(best[0]*d))-1, -1):
result = try_one_minfrag(n, m, k, d)
if result is not None:
best = (Fraction(k, d), d) + result