Un número racional se define como el cociente de dos números enteros a y b, llamados numerador y denominador, respectivamente, donde b != 0.
Ten en cuenta que, matemáticamente, el denominador no puede ser cero. Sin embargo, en muchas implementaciones de números racionales verás que se permite que el denominador sea cero, con un comportamiento similar al del infinito positivo o negativo en los números de coma flotante. En esos casos, el denominador y el numerador, por lo general, siguen sin poder ser ambos cero a la vez.
El valor absoluto |r| del número racional r = a/b es igual a |a|/|b|.
La suma de dos números racionales r₁ = a₁/b₁ y r₂ = a₂/b₂ es r₁ + r₂ = a₁/b₁ + a₂/b₂ = (a₁ * b₂ + a₂ * b₁) / (b₁ * b₂).
La diferencia de dos números racionales r₁ = a₁/b₁ y r₂ = a₂/b₂ es r₁ - r₂ = a₁/b₁ - a₂/b₂ = (a₁ * b₂ - a₂ * b₁) / (b₁ * b₂).
El producto (multiplicación) de dos números racionales r₁ = a₁/b₁ y r₂ = a₂/b₂ es r₁ * r₂ = (a₁ * a₂) / (b₁ * b₂).
Dividir un número racional r₁ = a₁/b₁ entre otro r₂ = a₂/b₂ es r₁ / r₂ = (a₁ * b₂) / (a₂ * b₁) si a₂ no es cero.
La potenciación de un número racional r = a/b a una potencia entera no negativa n es r^n = (a^n)/(b^n).
La potenciación de un número racional r = a/b a una potencia entera negativa n es r^n = (b^m)/(a^m), donde m = |n|.
La potenciación de un número racional r = a/b a un número real (de coma flotante) x es el cociente (a^x)/(b^x), que es un número real.
La potenciación de un número real x a un número racional r = a/b es x^(a/b) = root(x^a, b), donde root(p, q) es la raíz q-ésima de p.
Implementa las siguientes operaciones:
Tu implementación de los números racionales debe estar siempre reducida a su mínima expresión.
Por ejemplo, 4/4 debería reducirse a 1/1, 30/60 debería reducirse a 1/2, 12/8 debería reducirse a 3/2, etc.
Para reducir un número racional r = a/b, divide a y b entre el máximo común divisor (MCD) de a y b.
Así, por ejemplo, gcd(12, 8) = 4, de modo que r = 12/8 se puede reducir a (12/4)/(8/4) = 3/2.
La forma reducida de un número racional debe estar en su «forma estándar» (el denominador debe ser siempre un número entero positivo).
Si aparece un denominador con un número entero negativo, multiplica el numerador y el denominador por -1 para asegurarte de alcanzar la forma estándar.
Por ejemplo, 3/-4 debería reducirse a -3/4
Da por hecho que el lenguaje de programación que utilizas no tiene una implementación de números racionales.
Regístrate en Exercism para aprender y dominar Wren con 117 ejercicios y mentoría humana real, todo gratis.