Prawdopodobnie wiesz, że różne poziomy reputacji na Stack Exchange są różnie sformatowane, gdy są widoczne na stronie pytań / postu. Istnieją wszystkie reguły formatowania powtórzeń:
- jeśli użytkownik ma od 1 do 999 powtórzeń (od jednej do trzech cyfr), pozostaje niezmieniony.
- jeśli użytkownik ma 1000 do 9999 powtórzeń (cztery cyfry), otrzymuje przecinek jako separator:
9,999
jeśli użytkownik ma od 10000 do 99999 powtórzeń (pięć cyfr), zostanie skrócony i zaokrąglony. To znaczy, powtórzenie 16741 jest sformatowane jako
16.7k
, zwróć uwagę na separator kropki w przeciwieństwie do przecinka dla niższego powtórzenia (poprzedni punkt).16750 już spowoduje
16.8k
(ponieważ wydaje się to naprawione )16941 powoduje
16.9k
, 16950 zaokrągla w górę17k
, a także 17014, na przykład.99941 rund do
99.9k
, 99950 rund do100k
(jest to coś, czego tak naprawdę nienawidzę zaokrąglaniem powtórzeń na SE, ponieważ 100 000 to taki kamień milowy, a 99950 nie jest w pobliżu).
Jeśli użytkownik ma 100000 do 999999 powtórzeń, jest zaokrąglany w ten sposób:
100100 zaokrągla w dół do
100k
, 100500 zaokrągla w górę do101k
. Chodzi o to, że zaokrąglanie jest zakończone, ale część dziesiętna jest usuwana (w przeciwieństwie do czterocyfrowego powtórzenia).100450 zaokrągla w dół do
100k
, nie ma kroku, aby zaokrąglić 450 do 500. Ani 100499 - nadal jest100k
.279843 zaokrągla w górę
280k
i 399999 zaokrągla do400k
.
Jako dane wejściowe otrzymujesz surową reputację i wyprowadzasz ją w formacie sformatowanym.
Możesz wziąć pod uwagę, że dane wejściowe nie otrzymają żadnych niepoprawnych liczb / nieliczb lub liczb z zerami wiodącymi, tj 0001234
.
Ponieważ Jon Skeet nie wydaje się wkrótce osiągać 1 000 000, twój kod musi być tak krótki, jak to możliwe , nie musisz zajmować się powtórzeniem większym niż milion (tj. Nie ma specjalnych przypadków dla 999500 i wyższych).
.
przecinkiem oraz z przyrostkiemk
; z zastrzeżeniem, że jeśli trzecia znacząca cyfra jest0
i jest po prawej stronie przecinka dziesiętnego, wówczas wartość jest wyświetlana tylko do 2 cyfr znaczących. ”Określone wartości odcięcia można następnie przenieść na pojedynczą listę testów przypadki na końcu postu, co jest wygodniejsze w przypadku wklejania kopii do środowiska testowego.Odpowiedzi:
Japt,
5048 bajtówPierwsze podejscie; może być lepsza metoda.
Wypróbuj online!
Jak to działa
źródło
JavaScript (ES6),
7668 bajtówKolejna pierwsza próba. Dzięki Bogu za to przydatne
.toLocaleString()
, najkrótsza alternatywa, jaką mogłem znaleźć, to 21 bajtów dłużej ...Dzieli to tysiące według jednego
,
lub.
, w zależności od kraju, w którym mieszkasz. Aby uzyskaćpięćdwóch bajtów więcej, możesz zawsze używać przecinka:źródło
JavaScript (ES6), 71
Pokonanie @ETHProductions, gdy nie widzi mojej wskazówki.On to widział.Test
Test
źródło
ES6,
6862 bajtówEdycja:
["1", "001"]
Zapisałem 6 bajtów, kiedy zdałem sobie sprawę, że to oznacza"1,001"
.Edycja: Zapisano 2 bajty, aby naprawić komentarz @ Mwr247!
źródło
16950
daje16.9k
zamiast17k
Python 2.7, 58 bajtów
Musiałem użyć,
(x+.5)
aby załatwić16950->17k
sprawę.źródło