Vor ein paar Monaten hatten wir eine Diskussion über Meta, um die Reputation von Upvotes bei Fragen zu erhöhen. Hier sind die Grundlagen unseres aktuellen Reputationssystems für Abstimmungen: 1
- Eine Frage, die positiv bewertet wurde,
U
ist 5 Ruf wert. - Eine Antwortaufwertung
u
ist 10 Ruf wert. - Eine Frage oder Antwort, die falsch bewertet wurde,
d
hat einen Wert von -2.
Es gab viele verschiedene Vorschläge für ein neues System, aber das derzeit beliebteste ist identisch mit dem obigen, jedoch mit auf +10 Wiederholungen skalierten Fragen-Upvotes. Bei dieser Herausforderung geht es darum zu berechnen, wie viel mehr Wiederholungen Sie verdienen würden, wenn dieses System eingerichtet würde.
Schauen wir uns ein Beispiel an. Wenn die Abstimmungsaktivität UUUUuuuuUUUUUduuudUU
wäre, würden Sie im aktuellen System 121 verdienen:
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
Aber die gleiche Aktivität würde mit dem neuen System 176 verdienen:
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
Sie würden 55 Wiederholungen aus diesem Szenario gewinnen.
Bisher ist es nicht so schwierig, die geänderte Wiederholung zu berechnen. Zählen Sie einfach die Anzahl der U
s und multiplizieren Sie sie mit 5. Glücklicherweise ist das Repräsentantensystem nicht so einfach: Es gibt auch eine Repräsentantengrenze , die den höchsten Ruf darstellt, den Sie an einem UTC-Tag mit Stimmen verdienen können. Dies ist auf allen Sites auf 200 festgelegt.
Die Obergrenze für Wiederholungen gilt auch in Echtzeit: Wenn Sie bereits 196 Wiederholungen verdient haben und eine positive Antwort erhalten, haben Sie jetzt 200 Wiederholungen. Wenn Sie direkt danach eine Abwertung erhalten, werden die 2 Wiederholungen von 200 subtrahiert, so dass Sie 198 Wiederholungen haben.
Mit der Abstimmungsaktivität UUUuuuuUUUUuuuuUUUUUUUd
würden Sie 148 Wiederholungen nach dem aktuellen System verdienen:
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
Aber Sie würden mit dem neuen System 198 verdienen:
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
Somit beträgt die Erhöhung 50 Wiederholungen .
Herausforderung
Ihre Herausforderung besteht darin, ein Programm oder eine Funktion zu schreiben, die eine mehrzeilige Zeichenfolge enthält und die Gesamtwiederholung ausgibt, die mit dem obigen Algorithmus erzielt werden würde. Jede Zeile zählt als 1 UTC-Tag, daher gilt die Wiederholungsobergrenze nur einmal pro Zeile.
Testfälle
(Eine oder mehrere Eingabezeilen, gefolgt von der Ausgabe-Ganzzahl.)
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
Dies ist Code Golf, also gewinnt der kürzeste Code in Bytes.
Verwandte Herausforderungen: Berechnen Sie die begrenzte kumulative Summe eines Vektors . Berechnen Sie Ihre Stapelaustausch-Reputation
1 Dies ist eine stark vereinfachte Version des Systems. Sie verlieren auch 1 Wiederholung für das Abwerten einer Antwort, und es gibt nicht zustimmende Stimmen, die seltsam sind und eigenen Regeln folgen . und Undownvotes, denen nicht einmal Regeln folgen müssen .
quelle
Antworten:
Perl,
10491 + 2 = 93 BytesBenötigt die
-p
Flagge:Nervenzusammenbruch:
quelle
ES6, 104 Bytes
Berechnet die Vorher-Nachher-Wiederholung für jede Zeile. Mein erster Gebrauch von
eval
!quelle
Haskell,
9893 BytesDanke an BlackCap, um dieses weiter zu golfen. Jetzt denke ich, Lambda in späteren Herausforderungen jetzt zu versuchen.
Die ersten 3 Zeilen sind die Wertung, a & b ist die Wertung, f ist die Differenz und g ist die Funktion, die die Spezifikation verfälscht.
Verwendung:
quelle
Lua, 196 Bytes
Dieses Programm verwendet ein einziges mehrzeiliges Argument als Eingabe und gibt die Gesamtdifferenz in rep 'aus.
Ich bin davon ausgegangen, dass ich in der Eingabe nach einer nachgestellten neuen Zeile fragen darf. Andernfalls ist hier eine 204-Byte-Lösung, die diese nicht benötigt.
Ungolfed und Erklärungen
quelle