Desafio
Pegue um número e imprima-o com 4 dígitos ou menos usando letras e números. Por exemplo; 270,030
iria se transformar 270K
.
Chave
Bilhões -> B
Milhões -> M
Milhares -> K
Regras
- Você pode optar por aceitar números de entrada que incluem vírgulas que delimitam a cada três casas decimais (como
123,456,789
). - Arredonde para o mais próximo, pela metade.
- Os números só aumentam
999,499,999,999
. - A parte mantissa da resposta deve ser pelo menos 1.
- Todas as letras devem estar em maiúsculas e conforme especificado acima.
- As saídas devem ter 4 ou menos dígitos. (incluindo cartas, tais como
B
,K
eM
) - As saídas devem ser matematicamente precisas quanto possível. Exemplo:
15,480
->20K
NÃO está OK15,480
->15.5K
BOM
- Se houver várias saídas com a mesma precisão matemática, retorne uma delas. Exemplo:
1000
->1000
BOM1000
->1K
BOM
Exemplos:
1.234.567 -> 1,23M 999.500 -> 1 milhão 999.499 -> 999K 102 -> 102 1000 -> 1K 1001 -> 1001 100.000 -> 100.000 12.345.678.912 -> 12,3B 1.452.815.612 -> 1,45B
Submissões
- Isso é código-golfe , então a solução mais curta em cada idioma ganha
- As brechas padrão se aplicam
T -> trillion
na chave), então presumi que esse fosse o limite superior. Vou perguntar, mas de outra forma é uma perda de um byte.Python 3 , 127 bytes
Experimente online!
fonte
def f(n):l=len(str(n))-4;return[n,f"{round(n,~l):,}"[:4].replace(*",.").rstrip('.')+"KMBT"[-~l//3]][n>9999]
JavaScript (ES7), 74 bytes
Mostrar snippet de código
JavaScript (ES6), 80 bytes
Mostrar snippet de código
fonte