DEV Community

Discussion on: Python Exercise 14: sum of fractions

Collapse
 
mellen profile image
Matt Ellen

Fun little problem! Here's my solution, using the way we were taught to add fractions at school 😋 (I added in fraction reduction for extra spice!)

from math import gcd

def reduce_fraction(fraction):
    hcf = gcd(fraction[0], fraction[1])
    return [fraction[0]//hcf, fraction[1]//hcf]

def sum_of_fractions(fractions):
    total = fractions.pop()
    while len(fractions) > 0:
        next = fractions.pop()
        bottom = total[1] * next[1]
        topLeft = next[1] * total[0];
        topRight = next[0] * total[1]
        total = [topLeft + topRight, bottom]
    return reduce_fraction(total)

test = [[11, 2], [3, 4], [5, 4], [21, 11], [12, 6]]

fraction_sum = sum_of_fractions(test[:])

result = round(fraction_sum[0]/fraction_sum[1])

print(f'The sum of {test} fractions is {fraction_sum}, which is {result} to the nearest integer')

Enter fullscreen mode Exit fullscreen mode
Collapse
 
mathewchan profile image
HHMathewChan

Interesting method, just learn a syntax(test[:]) from you. Also good exercise for me to read long code from others.