Ahora te encuentras programando una calculadora, pero te das cuenta que cuando haces divisiones con enteros por ejemplo 1 / 3. Te llena toda la pantalla con 0.33333 y en algún momento pierdes precisión o tienes que truncar la entrada.
Después de varias de lectura te das cuenta que si tienes una división a / b donde a y b son enteros, solamente tienes 2 posibles salidas. O tienes una decimal cuyos decimales son finitos. Ejemplo 3 / 8 == 0.375 o tienes decimales que se repiten de manera indefinida ejemplo: 1 / 3 == 0.333333....
Tu tarea es dado una fracción (a / b) de enteros debes de regresar si equivalente en decimal. Pero con los paréntesis rodeando el patrón que se repite.
Entrada
Una lista con 2 enteros, donde el primer entero representa en numerador y el segundo el denominador. (numerador / denominador).
Salida
Una cadena con el numero decimal y con paréntesis en los dígitos que se repiten.
Plantilla para resolver el problema
Código Python:
Ver original
def to_decimal(fraction): numerator, denominator = fraction return "" #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")