Inteiros grandes, grandes erros

Neste desafio, você precisa criar uma class para lidar com inteiros grandes. Ela usará apenas um método estático chamado max, usado para encontrar o inteiro grande de maior valor entre os dados fornecidos.

Você também terá que lidar com uma série de exceções para determinar se a entrada fornecida é válida:

  • Um inteiro grande fornecido sempre será válido.
  • Um inteiro fornecido menor ou igual ao MAX_SAFE_INTEGER do JS será convertido em um inteiro grande (antes de calcular o valor máximo).
  • Uma string que contém um inteiro com valor menor ou igual ao MAX_SAFE_INTEGER do JS será convertida em um inteiro grande (antes de calcular o valor máximo).
  • Se nenhuma entrada for fornecida, a função deverá retornar null.
  • Se nenhuma das condições anteriores for satisfeita, a entrada fornecida não é válida.

O método max aplicado à entrada deverá retornar:

  • Se a entrada for válida, o maior valor fornecido como um inteiro grande.
  • null se nenhuma entrada for fornecida.
  • Uma string "Big Error" se a entrada contiver dados inválidos.

Exemplos

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

  • Ler o link específico sobre o comportamento do BigInt (consulte a aba Recursos) é altamente recomendável.
  • As entradas e os valores serão fornecidos de várias maneiras, tentando representar um cenário real. Para facilitar a programação, os testes estão agrupados separadamente.