Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Oil Pie by zcjsword
def divide_pie(groups):
from fractions import Fraction as frac
total = sum([abs(x) for x in groups])
pie = frac(1,1)
for g in groups:
if g > 0:
pie -= frac(g, total)
elif g < 0:
pie = pie * (total + g) / total
else:
pass
return int(pie.numerator), int(pie.denominator)
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert isinstance((2, -2), (tuple, list)), "Return tuple or list"
assert tuple(divide_pie((2, -1, 3))) == (1, 18), "Example"
assert tuple(divide_pie((1, 2, 3))) == (0, 1), "All know about the pie"
assert tuple(divide_pie((-1, -1, -1))) == (8, 27), "One by one"
assert tuple(divide_pie((10,))) == (0, 1), "All together"
Dec. 16, 2015