Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Using math module + gcd() and lcm() functions solution in Clear category for Fractions Addition by H0r4c3
from math import gcd, lcm
def add_fractions(fracts):
denominators = [item[1] for item in fracts]
least_common_multiple = lcm(*denominators)
sum_numerators = sum([fraction[0] * least_common_multiple//fraction[1] for fraction in fracts])
result = (sum_numerators, least_common_multiple)
greatest_common_divisor = gcd(result[0], result[1])
result = (result[0]//greatest_common_divisor, result[1]//greatest_common_divisor)
if result[0] > result[1]:
if result[0] % result[1] == 0:
return result[0] // result[1]
c = result[0] // result[1]
r = result[0] % result[1]
return f'{c} and {r}/{result[1]}'
elif result[0] < result[1]:
return f'{result[0]}/{result[1]}'
else:
return result[0] // result[1]
if __name__ == '__main__':
print("Example:")
print(add_fractions(((2, 3), (2, 3))))
#These "asserts" using only for self-checking and not necessary for auto-testing
assert add_fractions(((2, 3), (2, 3))) == "1 and 1/3"
assert add_fractions(((1, 3), (1, 3))) == "2/3"
assert add_fractions(((1, 3), (1, 3), (1, 3))) == 1
print("Coding complete? Click 'Check' to earn cool rewards!")
March 31, 2022