Introduction:
Comme Twitter et Instagram et d'autres, je voulais afficher des nombres comme 1.2Ket 3.8 Mau lieu de 1,222ou 3,823,456.
Mais ce n'est pas tout! Comme nous le savons tous, il pourrait y avoir des êtres humains qui sans aucun doute n'aimeront pas ces abréviations et essaieront de les inverser. Alors, 1.2kdeviendra 1,200et 3.8 Mdeviendra 3,800,000.
La tâche:
- votre tâche consiste à écrire un programme ou une fonction qui convertit une liste de nombres ( qui sont donnés sous forme de chaînes ) en leurs paires abrégées et vice-versa.
Par exemple, si la liste d'entrées (ou n'importe quelle autre STDIN) l'était ['1.4k', '1,234,567', '7.99M'], alors vous devriez sortir:
['1,400', '1.2M', '7,990,000']
Vous pouvez suivre le schéma suivant pour les abréviations:
- 10 3 -> un kilo -> K
- 10 6 -> un million -> M
- 10 9 -> un milliard -> B
Votre code peut prendre en minuscules, en majuscules, en majuscules ou en minuscules pour l'entrée et utiliser n'importe lequel de ces éléments pour la sortie, mais il doit être cohérent.
Règles et restrictions:
- vous pouvez écrire un programme ou une fonction, en prenant l'entrée via
STDIN(ou l'alternative la plus proche), l'argument de ligne de commande ou l'argument de la fonction et en sortant le résultat viaSTDOUT(ou l'alternative la plus proche), la valeur de retour de la fonction ou le paramètre de la fonction (out). - l'entrée peut être dans n'importe quel format de liste ou de chaîne. Vous pouvez supposer que le sont inférieurs à chacun et que la liste contient au moins un élément.
ai231 - chaque numéro abrégé n'en contiendra qu'un seul
.tandis qu'un numéro normal en contiendra autant,que nécessaire (vous pouvez supposer que ce nombre ne sera pas modifié). - vous NE POUVEZ PAS entrer un nombre
'123456'mais plutôt123,456 - les règles de code-golf standard s'appliquent.
Cas de 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']
Clarifications:
- pour les nombres <1000 après la virgule décimale dans la sortie des abréviations, vous devez avoir autant de chiffres que nécessaire pour obtenir le résultat correct. (par exemple:
2-> deviendra0.002k) - cela signifie 3 décimales au maximum ; pour les nombres> 1000, vous pouvez avoir au maximum 1 décimale . - l'abréviation peut être en minuscule ou en majuscule
- J'ai supprimé la restriction intégrée comme suggéré dans les commentaires
Le code le plus court en octets gagne!
'123,456,789' -> '123.4M'? De plus, cela ne précise pas le nombre de décimales à utiliser. De toute façon, tout ce qui est inférieur à 1000 ne devrait pas être abrégé.
["k", "M", "G"]. Que signifie "alors qu'un nombre normal en contiendra autant que nécessaire ", dans mon pays, ce serait une erreur d'en utiliser.