Вступ:
Як і Twitter, і Instagram та інші, я хотів відображати такі цифри, як, 1.2Kа 3.8 Mне 1,222або 3,823,456.
Але це ще не все! Як ми всі знаємо, можуть бути люди, яким ці абревіатури неодмінно не сподобаються і спробують їх змінити. Отже, 1.2kстане 1,200і 3.8 Mстане 3,800,000.
Завдання:
- ваше завдання - написати програму або функцію, яка перетворює список номерів ( які задаються у вигляді рядків ) у їхні скорочені пари і навпаки.
Наприклад, якщо список введення (або будь-який STDIN) був ['1.4k', '1,234,567', '7.99M'], слід вивести:
['1,400', '1.2M', '7,990,000']
Ви можете слідувати наступній схемі скорочень:
- 10 3 -> один кіло -> К
- 10 6 -> один мільйон -> M
- 10 9 -> один мільярд -> B
Ваш код може передбачати всі малі регістри, всі великі регістри, змішаний регістр або неозначений регістр для введення та використання будь-якого з них для виведення, але повинен бути узгодженим.
Правила та обмеження:
- Ви можете написати програму або функцію, взявши введення через
STDIN(або найближчу альтернативу), аргумент командного рядка або аргумент функції та вивівши результат черезSTDOUT(або найближчу альтернативу), значення повернення функції або параметр функції (вихід). - вхід може бути у будь-якому зручному списку чи рядковому форматі. Ви можете припустити, що їх менше, ніж кожен, і що список містить щонайменше один елемент.
ai231 - кожне скорочене число буде містити лише одне,
.тоді як нормальне число буде містити стільки,,скільки потрібно (ви можете припустити, що ці числа не будуть змінені). - ви НЕ МОЖЕТЕ вводити число як,
'123456'а скоріше123,456 - застосовуються стандартні правила гольф-коду .
Тестові приклади:
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']
Роз'яснення:
- для чисел <1000 після десяткової крапки у абревіатурі ви повинні мати стільки цифр, скільки потрібно для отримання правильного результату. (наприклад:
2-> стане0.002k) - це означає максимум 3 десяткові знаки ; для чисел> 1000 ви можете мати максимум 1 десятковий знак . - абревіатура може бути як в нижньому, так і в верхньому регістрі
- Я видалив вбудоване обмеження, як було запропоновано в коментарях
Виграє найкоротший код у байтах!
'123,456,789' -> '123.4M'? Крім того, це не пояснює, скільки десятків використовувати. Безумовно, нічого, що не перевищує 1000, не потрібно буде скорочувати.
["k", "M", "G"]. Що означає "хоча нормальне число буде містити стільки, скільки потрібно ", у моїй країні було б помилкою використовувати будь-яке.