Вы, вероятно, знаете, что разные уровни репутации в Stack Exchange по-разному форматируются, если смотреть со страницы вопросов / поста. Все правила форматирования репов:
- если у пользователя от 1 до 999 (от одной до трех цифр) повторений, он остается без изменений.
- если у пользователя от 1000 до 9999 повторений (четыре цифры), он получает запятую в качестве разделителя:
9,999
если у пользователя от 10000 до 99999 повторений (пять цифр), он укорачивается и округляется. То есть, 16741 повтор отформатирован как
16.7k
, обратите внимание на разделитель точек в отличие от запятой для более низкого повторения (предыдущая точка).16750 уже будет результат
16.8k
(так как это, кажется, исправлено )16941 приводит к
16.9k
16950 раундам до17k
, как и 17014, например.99941 раундов в
99.9k
, 99950 раундов в100k
(это то, что я на самом деле ненавижу с повторным округлением на SE, потому что 100 000 - это такая веха, а 99950 совсем близко).
Если у пользователя от 100000 до 999999 повторений, оно округляется следующим образом:
100100 раундов до
100k
, 100500 раундов до101k
. Дело в том, что округление выполнено, но десятичная часть удалена (в отличие от четырехзначного повторения).100450 округляется до
100k
, без шага, чтобы округлить 450 до 500. Также не 100499 - это все еще100k
.279843 раундов до
280k
и 399999 раундов до400k
.
В качестве входных данных вы получаете исходную репутацию и выводите ее в формате.
Вы можете считать, что ввод не будет получать некорректные номера / без номера или номера с ведущими нулями, т.е. 0001234
.
Поскольку Jon Skeet не достигает 1000000 в ближайшее время, ваш код должен быть настолько коротким, насколько это возможно, вам не нужно обрабатывать повторение более одного миллиона (т.е. никаких особых случаев для 999500 и выше).
.
десятичной точкой и с суффиксомk
; с учетом предостережения, что если третья значащая цифра находится0
и находится справа от десятичной точки, то значение отображается только до 2 значащих цифр. "Затем конкретные срезы можно перенести в один список испытаний случаи в конце поста, что более удобно для вставки в тестовую среду.Ответы:
Japt,
5048 байтовПервая попытка; может быть лучший метод.
Попробуйте онлайн!
Как это устроено
источник
JavaScript (ES6),
7668 байтЕще одна первая попытка. Слава Богу, что под рукой
.toLocaleString()
, самая короткая альтернатива, которую я смог найти, на 21 байт длиннее ...Это разделяет тысячи либо на,
,
либо.
, в зависимости от того, в какой стране вы живете. Ещепять илидва байта вы можете сделать так, чтобы они всегда использовали запятую:источник
JavaScript (ES6), 71
Бить @ETHProductions пока он не видит мою подсказку.Он видел это.Тестовое задание
Тестовое задание
источник
ES6,
6862 байтаРедактировать: Сохранено 6 байтов, когда я понял, что
["1", "001"]
преобразуется в"1,001"
.Изменить: Сохранено 2 байта, чтобы исправить комментарий @ Mwr247!
источник
16950
дает16.9k
вместо17k
Python 2.7, 58 байт
Я должен был использовать,
(x+.5)
чтобы иметь дело с16950->17k
делом ..источник