Introduzione:
Come Twitter, Instagram e altri, volevo visualizzare numeri come 1.2Ke 3.8 Minvece di 1,222o 3,823,456.
Ma non è tutto! Come tutti sappiamo, potrebbero esserci alcuni esseri umani che indubbiamente non apprezzeranno queste abbreviazioni e proveranno a invertirle. Quindi, 1.2kdiventerà 1,200e 3.8 Mdiventerà 3,800,000.
L'obiettivo:
- il tuo compito è scrivere un programma o una funzione che converta un elenco di numeri ( che sono indicati come stringhe ) nelle loro coppie abbreviate e viceversa.
Ad esempio, se l'elenco di input (o qualsiasi STDIN) era ['1.4k', '1,234,567', '7.99M'], quindi dovresti produrre:
['1,400', '1.2M', '7,990,000']
Puoi seguire lo schema seguente per le abbreviazioni:
- 10 3 -> un chilo -> K
- 10 6 -> un milione -> M
- 10 9 -> un miliardo -> B
Il codice può assumere tutte le lettere minuscole, tutte maiuscole, maiuscole o minuscole per l'input e utilizzare una di queste per l'output, ma dovrebbe essere coerente.
Regole e restrizioni:
- è possibile scrivere un programma o una funzione, prendendo l'input tramite
STDIN(o l'alternativa più vicina), l'argomento della riga di comando o l'argomento della funzione e producendo il risultato tramiteSTDOUT(o l'alternativa più vicina), il valore di ritorno della funzione o il parametro della funzione (out). - l'input può essere in qualsiasi elenco o formato stringa conveniente. Si può presumere che siano inferiori a ciascuno e che l'elenco contenga almeno un elemento.
ai231 - ogni numero abbreviato conterrà solo uno
.mentre un numero normale conterrà tutti i numeri,necessari (si può presumere che questi numeri non vengano modificati). - si NON POTREBBE inserire un numero come
'123456', ma piuttosto123,456 - si applicano le regole standard del code-golf .
Casi test:
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']
chiarimenti:
- per i numeri <1000 dopo il punto decimale nell'output delle abbreviazioni dovresti avere tutte le cifre necessarie per ottenere il risultato corretto. (es .:
2-> diventerà0.002k) - ciò significa al massimo 3 decimali ; per numeri> 1000 puoi avere un massimo di 1 decimale . - l'abbreviazione può essere sia in minuscolo che maiuscolo
- Ho rimosso la restrizione integrata come suggerito nei commenti
Vince il codice più breve in byte!
'123,456,789' -> '123.4M'? Inoltre, questo non chiarisce quanti decimali usare. Sicuramente nulla sotto i 1000 non dovrebbe essere abbreviato comunque.
["k", "M", "G"]. Cosa significa "mentre un numero normale conterrà tanti, se necessario ", nel mio paese sarebbe un errore usarne uno.