Ahí va:
Código Python:
Ver originaldef to_decimal(fraction):
numerator, denominator = fraction
x = numerator // denominator
numerator = 10 * (numerator - x * denominator)
solucion = str(x)
solucion += '.'
pasos = {}
while numerator > 0:
previo = pasos.get(numerator, None)
if previo is not None:
indice_repe = previo
no_repe = solucion[:indice_repe]
repe = solucion[indice_repe:]
return no_repe + '(' + repe + ')'
pasos[numerator] = len(solucion)
v = numerator // denominator
solucion += str(v)
numerator -= v * denominator
numerator *= 10
return solucion
#These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
from time import time
t1 = time()
assert to_decimal([1, 3]) == "0.(3)"
assert to_decimal([3, 6]) == "0.5"
assert to_decimal([2, 6]) == "0.(3)"
assert to_decimal([5, 3]) == "1.(6)"
assert to_decimal([3, 8]) == "0.375"
assert to_decimal([7, 11]) == "0.(63)"
assert to_decimal([29, 12]) == "2.41(6)"
assert to_decimal([11, 7]) == "1.(571428)"
assert to_decimal([23, 2]) == "11.5"
assert to_decimal([2, 21]) == "0.(095238)"
assert to_decimal([1, 17]) == "0.(0588235294117647)"
assert to_decimal([58, 23]) == "2.(5217391304347826086956)"
assert to_decimal([2, 3]) == "0.(6)"
assert to_decimal([5, 2]) == "2.5"
assert to_decimal([6, 4]) == "1.5"
assert to_decimal([22, 4]) == "5.5"
assert to_decimal([1, 100]) == "0.01"
assert to_decimal([1, 20]) == "0.05"
assert to_decimal([1, 300]) == '0.00(3)'
assert to_decimal([700, 351]) == '1.(994301)'
assert to_decimal([999, 123]) == '8.(12195)'
assert to_decimal([20, 6]) == "3.(3)"
assert to_decimal([11, 13]) == "0.(846153)"
assert to_decimal([22, 13]) == "1.(692307)"
assert to_decimal([18, 23]) == "0.(7826086956521739130434)"
assert to_decimal([30, 23]) == "1.(3043478260869565217391)"
assert to_decimal([10, 12]) == "0.8(3)"
assert to_decimal([41, 12]) == "3.41(6)"
assert to_decimal([1, 97]) == '0.(010309278350515463917525773195876288659793814432989690721649484536082474226804123711340206185567)'
assert to_decimal([420, 294420]) == '0.(0014265335235378031383737517831669044222539229671897289586305278174037089871611982881597717546362339514978601997146932952924393723252496433666191155492154065620542082738944365192582025677603423680456490727532097004279600570613409415121255349500713266761768901569186875891583452211126961483594864479315263908701854493580599144079885877318116975748930099857346647646219686162624821683309557774607703281027104136947218259629101283880171184022824536376604850213980028530670470756062767475035663338088445078459343794579172610556348074179743223965763195435092724679029957203994293865905848787446504992867332382310984308131241084165477888730385164051355206847360912981455064194008559201141226818830242510699)'
t2 = time()
print("Tiempo de ejecucion %0.3fs" % (t2 - t1))
print("Todos los tests completados")
Gracias.