Probablemente sepa que los diferentes niveles de reputación en Stack Exchange tienen un formato diferente cuando se ven desde la página de preguntas / una publicación. Existen todas las reglas de formateo de repeticiones:
- si un usuario tiene 1 a 999 (uno a tres dígitos) rep, se deja como está.
- Si un usuario tiene 1000 a 9999 repeticiones (cuatro dígitos), recibe la coma como separador:
9,999
si un usuario tiene de 10000 a 99999 repeticiones (cinco dígitos), se acorta y se redondea. Es decir, 16741 rep está formateado como
16.7k
, observe el separador de puntos a diferencia de la coma para el rep inferior (punto anterior).16750 ya resultará
16.8k
(ya que esto parece estar solucionado )16941 da como resultado
16.9k
, 16950 redondea hasta17k
, al igual que 17014, por ejemplo.99941 redondea a
99.9k
, 99950 redondea a100k
(esto es algo que realmente odio con el redondeo de repeticiones en SE, porque 100,000 es un hito y 99950 no está cerca).
Si un usuario tiene 100000 a 999999 repeticiones, se redondea de esta manera:
100100 redondea hacia abajo
100k
, 100500 redondea hasta101k
. La cuestión es que el redondeo está hecho, pero la parte decimal se elimina (a diferencia del representante de cuatro dígitos).100450 se redondea hacia abajo
100k
, no hay paso para redondear 450 a 500. Tampoco 100499, sigue siendo100k
.279843 redondea hacia arriba
280k
y 399999 redondea hacia400k
.
Como entrada, se le da la reputación bruta y la emite como formateada.
Puede considerar que la entrada no recibirá números / no números no válidos, o números con ceros a la izquierda, es decir 0001234
.
Debido a que Jon Skeet no parece llegar a 1,000,000 pronto, su código debe ser lo más breve posible , no necesita manejar el representante mayor de un millón (es decir, no hay casos especiales para 999500 y superiores).
.
un punto decimal y con un sufijok
; sujeto a la advertencia de que si la tercera cifra significativa está0
y está a la derecha del punto decimal, entonces el valor se muestra solo a 2 cifras significativas " . Los valores de corte específicos se podrían mover a una sola lista de prueba casos al final de la publicación, que es más conveniente para copiar y pegar en un marco de prueba.Respuestas:
Japt,
5048 bytesPrimer intento; Puede haber un mejor método.
Pruébalo en línea!
Cómo funciona
fuente
JavaScript (ES6),
7668 bytesOtro primer intento. Gracias a Dios por eso
.toLocaleString()
, la alternativa más corta que pude encontrar es 21 bytes más larga ...Esto separa miles entre uno
,
u otro.
, según el país en el que viva. Paracincodos bytes más, puede hacer que siempre use una coma:fuente
JavaScript (ES6), 71
Vencer a @ETHProductions mientras no ve mi pista.El lo vió.Prueba
Prueba
fuente
ES6,
6862 bytesEditar: guardado 6 bytes cuando me di cuenta de que
["1", "001"]
stringifica a"1,001"
.Editar: ¡Se guardaron 2 bytes para arreglar el comentario de @ Mwr247!
fuente
16950
da en16.9k
lugar de17k
Python 2.7, 58 bytes
Tuve que usar
(x+.5)
para lidiar con el16950->17k
caso ...fuente