Inteiros grandes, grandes erros

Published by er0s in

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.