Kilka miesięcy temu rozmawialiśmy o meta na temat zwiększania reputacji przyznawanej za głosowanie nad pytaniami. Oto podstawy naszego obecnego systemu reputacji głosów: 1
- Pytanie głosujące
U
jest warte 5 punktów reputacji. - Odpowiedź głosowania
u
jest warta 10 reputacji. - Odpowiedź na pytanie lub odpowiedź
d
jest warta -2 reputacji.
Pojawiło się wiele różnych sugestii dotyczących nowego systemu, ale obecnie najpopularniejszy jest identyczny z powyższym, ale z pytaniami pozytywnymi skalowanymi do +10 powtórzeń. Wyzwanie polega na obliczeniu, o ile więcej powtórzeń zarobiłbyś, gdyby ten system został wdrożony.
Spójrzmy na przykład. Gdyby głosowanie było UUUUuuuuUUUUUduuudUU
, wówczas w obecnym systemie zarobiłbyś 121:
U x 4 x 5 = 20 = 20
u x 4 x 10 = 40 = 60
U x 5 x 5 = 25 = 85
d x 1 x -2 = -2 = 83
u x 3 x 10 = 30 = 113
d x 1 x -2 = -2 = 111
U x 2 x 5 = 10 = 121
Total: 121
Ale ta sama działalność zarobiłaby 176 w nowym systemie:
U x 4 x 10 = 40 = 40
u x 4 x 10 = 40 = 80
U x 5 x 10 = 50 = 130
d x 1 x -2 = -2 = 128
u x 3 x 10 = 30 = 158
d x 1 x -2 = -2 = 156
U x 2 x 10 = 20 = 176
Total: 176
Zyskałbyś 55 powtórzeń z tego scenariusza.
Jak dotąd obliczenie zmienionego powtórzenia nie jest trudne; wystarczy policzyć liczbę U
si pomnożyć przez 5. Na szczęście system powtórzeń nie jest taki prosty: istnieje również limit powtórzeń , który jest największą reputacją, jaką można zdobyć dzięki głosom w jeden dzień UTC. Jest to ustawione na 200 we wszystkich witrynach.
Ograniczenie liczby powtórzeń obowiązuje również w czasie rzeczywistym: jeśli zdobyłeś już 196 powtórzeń i otrzymałeś odpowiedź pozytywną, będziesz mieć 200 powtórzeń. Jeśli zaraz potem otrzymasz głos negatywny, 2 powtórzenia zostaną odjęte od 200, więc będziesz mieć 198 powtórzeń.
W wyniku głosowania UUUuuuuUUUUuuuuUUUUUUUd
w obecnym systemie zarobiłbyś 148 powtórzeń:
U x 3 x 5 = 15 = 15
u x 4 x 10 = 40 = 55
U x 4 x 5 = 20 = 75
u x 4 x 10 = 40 = 115
U x 7 x 5 = 35 = 150
d x 1 x -2 = -2 = 148
Total: 148
Ale zarobiłbyś 198 w nowym systemie:
U x 3 x 10 = 30 = 30
u x 4 x 10 = 40 = 70
U x 4 x 10 = 40 = 110
u x 4 x 10 = 40 = 150
U x 7 x 10 = 70 = 200 (rep capped)
d x 1 x -2 = -2 = 198
Total: 198
Zatem wzrost wynosi 50 powtórzeń .
Wyzwanie
Wyzwanie polega na napisaniu programu lub funkcji, która pobierze ciąg wielu wierszy i wyświetli całkowitą liczbę powtórzeń uzyskaną przy użyciu powyższego algorytmu. Każda linia liczy się jako 1 dzień UTC, więc ograniczenie liczby powtórzeń obowiązuje tylko raz na linię.
Przypadki testowe
(Jeden lub więcej wierszy wejścia, po których następuje liczba całkowita wyjściowa.)
UUUuudd
15
UUUuUUUUuUuuUUUUudUUUUuU
57
UUUuUUUUuUuuUUUUudUUUUuU
UUUuudd
72
uuuuuuu
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
uuuuuuuuuuuuuuuuuuuu
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
0
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
5
(empty string)
0
UUUuuuuuUUUuuUUUUUUuuuUUUuuUUUUuuuuUUUdddddddUU
4
UUUuuuuuUUUuuUUUUUUuuuUUUuuUUUUuuuuUUUdddddddUU
UuuUUUudUU
UUUUUUUUUuuuuuuUUUUUUuuUUUUUUuuuuuUUUUUUUUuUUUuuuuUUUUuuuUUUuuuuuuUUUUUUUUuuUUUuuUU
UUu
U
d
UU
UUUUUUUUUUUU
119
To jest kod golfowy, więc wygrywa najkrótszy kod w bajtach.
Wyzwania pokrewne: Oblicz ograniczoną sumę wektora , Oblicz reputację wymiany stosów
1 To jest bardzo uproszczona wersja systemu. Utracasz również 1 powtórzenie za zanotowanie odpowiedzi na głos, i istnieją niepotwierdzone głosy, które są dziwne i przestrzegają własnych zasad ; i niezapisane głosy, które nawet nie mają zasad do przestrzegania .