Enteros grandes, grandes errores

Published by er0s in

En este desafío, tendrás que crear una class para trabajar con enteros grandes. Solo usará un método estático llamado max, que sirve para encontrar el entero grande con el valor más alto entre los datos proporcionados.

También tendrás que gestionar una serie de excepciones para determinar si la entrada proporcionada es válida:

  • Un entero grande proporcionado siempre será válido.
  • Un entero proporcionado menor o igual que el MAX_SAFE_INTEGER de JS se convertirá en un entero grande (antes de calcular el valor máximo).
  • Una cadena que contiene un entero con un valor menor o igual que el MAX_SAFE_INTEGER de JS se convertirá en un entero grande (antes de calcular el valor máximo).
  • Si no se proporciona ninguna entrada, la función debe devolver null.
  • Si no se cumple ninguna de las condiciones anteriores, la entrada proporcionada no es válida.

El método max aplicado a la entrada debe devolver:

  • Si la entrada es válida, el valor proporcionado más alto como un entero grande.
  • null si no se proporciona ninguna entrada.
  • Una cadena "Big Error" si la entrada contiene datos no válidos.

Ejemplos

Big.max(1n, 10n, 5n) ➞ 10n

Big.max("10", 5n, 1) ➞ 10n

Big.max() ➞ null

Big.max(2 ** 53 - 1) ➞ 9007199254740991n

Big.max(2 ** 53) ➞ "Big Error"

Big.max("10" / 3) ➞ "Big Error"

Big.max("10" / 2) ➞ 5n

Big.max(10 - 12, 10 - 10, 10 - 11) ➞ 0n

Big.max(0n) ➞ 0n

Big.max("") ➞ "Big Error"

Nota

  • Leer el enlace específico sobre el comportamiento de BigInt (consulta la pestaña Recursos) es sumamente recomendable.
  • Las entradas y los valores se proporcionarán de varias maneras para intentar representar un escenario real. Para facilitar la programación, las pruebas están agrupadas por separado.