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_INTEGERdo 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_INTEGERdo 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.
nullse 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.