Wprowadzenie:
Podobnie jak Twitter, Instagram i inne, chciałem wyświetlać liczby takie jak 1.2Ki 3.8 Mzamiast 1,222lub 3,823,456.
Ale to nie wszystko! Jak wszyscy wiemy, mogą istnieć istoty ludzkie, które bez wątpienia nie polubią tych skrótów i będą próbowały je odwrócić. Tak 1.2księ stanie 1,200i 3.8 Mstanie się 3,800,000.
Zadanie:
- Twoim zadaniem jest napisanie programu lub funkcji, która konwertuje listę liczb ( które są podane jako ciągi znaków ) na ich pary skrótowe i odwrotnie.
Na przykład, jeśli lista wejściowa (lub dowolna STDIN) była ['1.4k', '1,234,567', '7.99M'], to powinieneś wypisać:
['1,400', '1.2M', '7,990,000']
Możesz zastosować następny schemat dla skrótów:
- 10 3 -> jeden kilogram -> K.
- 10 6 -> jeden milion -> M
- 10 9 -> miliard -> B
Twój kod może przyjmować wszystkie małe i wielkie litery, mieszane lub nieokreślone litery i używać dowolnego z nich do wyświetlania, ale powinien być spójny.
Zasady i ograniczenia:
- możesz napisać program lub funkcję, przyjmując dane wejściowe za pomocą
STDIN(lub najbliższej alternatywy), argumentu wiersza polecenia lub argumentu funkcji i wypisując wynik za pomocąSTDOUT(lub najbliższej alternatywy), wartości zwracanej funkcji lub parametru funkcji ( wyjściowej ). - dane wejściowe mogą być w dowolnym dogodnym formacie listy lub ciągu. Możesz założyć, że są one mniejsze niż każdy i że lista zawiera co najmniej jeden element.
ai231 - każda skrócona liczba będzie zawierać tylko jeden,
.podczas gdy normalna liczba będzie zawierać tyle,,ile to konieczne (możesz założyć, że te liczby nie zostaną zmienione). - ty NIE MOŻE wprowadzić numer jako
'123456'raczej123,456 - obowiązują standardowe zasady gry w golfa .
Przypadki testowe:
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']
Wyjaśnienia:
- dla liczb <1000 po kropce dziesiętnej na wyjściu skrótu powinieneś mieć tyle cyfr, ile jest to wymagane, aby uzyskać poprawny wynik. (np .:
2-> stanie się0.002k) - oznacza to co najwyżej 3 miejsca po przecinku ; dla liczb> 1000 możesz mieć maksymalnie 1 miejsce po przecinku . - skrót może być pisany zarówno małymi, jak i dużymi literami
- Usunąłem ograniczenie wbudowane zgodnie z sugestiami w komentarzach
Najkrótszy kod w bajtach wygrywa!
'123,456,789' -> '123.4M'? Nie wyjaśnia to również, ile liczb dziesiętnych należy zastosować. Z pewnością coś poniżej 1000 nie powinno i tak być skracane.
["k", "M", "G"]. Co oznacza, że „chociaż normalna liczba będzie zawierać tyle, ile to konieczne ”, w moim kraju użycie jakiegokolwiek błędu byłoby błędem.