Вступление:
Как 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 -> миллион -> М
- 10 9 -> один миллиард -> B
Ваш код может принимать все строчные, все прописные, смешанные или неопределенные регистры для ввода и использовать любой из них для вывода, но должен быть согласованным.
Правила и ограничения:
- Вы можете написать программу или функцию, принимая ввод через
STDIN(или ближайшую альтернативу), аргумент командной строки или аргумент функции и выводя результат черезSTDOUT(или ближайшую альтернативу), возвращаемое значение функции или параметр функции (out). - ввод может быть в любом удобном формате списка или строки. Вы можете предположить, что их меньше, чем каждый, и что список содержит хотя бы один элемент.
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"]. Что означает «хотя обычное число будет содержать столько, сколько необходимо », в моей стране было бы ошибкой использовать любое.