Introducción:
Al igual que Twitter e Instagram y otros, quería mostrar números como 1.2K
y en 3.8 M
lugar de 1,222
o 3,823,456
.
¡Pero eso no es todo! Como todos sabemos, puede haber algunos seres humanos a quienes sin duda no les gustarán estas abreviaturas y tratarán de revertirlas. Entonces, 1.2k
se convertirá 1,200
y 3.8 M
se convertirá 3,800,000
.
La tarea:
- su tarea es escribir un programa o una función que convierta una lista de números ( que se dan como cadenas ) en sus pares abreviados y viceversa.
Por ejemplo, si la lista de entrada (o alguna STDIN
) era ['1.4k', '1,234,567', '7.99M']
, entonces debería generar:
['1,400', '1.2M', '7,990,000']
Puede seguir el siguiente esquema para abreviaturas:
- 10 3 -> un kilo -> K
- 10 6 -> un millón -> M
- 10 9 -> mil millones -> B
Su código puede asumir todas las minúsculas, mayúsculas, mayúsculas y minúsculas o entradas indefinidas para la entrada y usar cualquiera de estas para la salida, pero debe ser coherente.
Reglas y restricciones:
- puede escribir un programa o función, tomando la entrada a través
STDIN
(o la alternativa más cercana), el argumento de la línea de comandos o el argumento de la función y generando el resultado a travésSTDOUT
(o la alternativa más cercana), el valor de retorno de la función o el parámetro de la función (out). - la entrada puede estar en cualquier lista conveniente o formato de cadena. Puede suponer que son menores que cada uno y que la lista contiene al menos un elemento.
ai
231
- cada número abreviado contendrá solo uno,
.
mientras que un número normal contendrá tantos,
como sea necesario (puede suponer que estos números no se modificarán). - usted NO PUEDE introducir un número como
'123456'
sino123,456
- se aplican reglas estándar de código de golf .
Casos de prueba:
Input: ['1.5M', '77.6k', '123,456,789'] Output: ['1,500,000', '77,600', '123.4M']
Input: ['3,000,000,000', '581k', '2b'] Output: ['3B', '581,000', '2,000,000,000']
Input: ['0.1k'] Output: ['100']
Input: ['888', '33'] Output: ['0.888k', '0.033k']
Aclaraciones:
- para números <1000 después del punto decimal en la salida de abreviatura, debe tener tantos dígitos como sea necesario para obtener el resultado correcto. (por ejemplo:
2
-> se convertirá0.002k
) - eso significa 3 decimales como máximo ; para números> 1000 puede tener un máximo de 1 decimal . - la abreviatura puede estar en minúsculas o mayúsculas
- Eliminé la restricción incorporada como se sugiere en los comentarios
¡El código más corto en bytes gana!
'123,456,789' -> '123.4M'
? Además, esto no aclara cuántos decimales usar. Seguramente, cualquier cosa por debajo de 1000 no debería ser abreviada de todos modos.
["k", "M", "G"]
. ¿Qué significa "mientras que un número normal contendrá tantos, según sea necesario ", en mi país sería un error usar alguno?