Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
first version - unsuccesful... solution in Uncategorized category for Oil Pie by jells123
import fractions
def divide_pie(groups):
s = sum(map(lambda x: abs(x), groups))
pie = fractions.Fraction(1, 1)
for g in groups:
if g > 0:
pie = pie - fractions.Fraction(g, s)
elif g < 0:
pie = pie * (1 - fractions.Fraction(abs(g), s))
return pie.numerator, 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"
didntwork = '''from fractions import gcd
def subtract(num1, den1, num2, den2):
num = num1*den2 - num2*den1
den = den1 * den2
x = gcd(num, den)
num = num/x
den = den/x
return(num, den)
def divide_pie(groups):
pie_num = 1
pie_den = 1
s = sum(map(lambda x: abs(x), groups))
for g in groups:
if g > 0:
(pie_num, pie_den) = subtract(pie_num, pie_den, g, s)
elif g < 0:
(pie_num, pie_den) = subtract(pie_num, pie_den, pie_num*abs(g), pie_den*s)
return (int(pie_num), int(pie_den))'''
Nov. 22, 2015
Comments: