Was wäre Ihr Ruf ohne die Repräsentantenmütze?

16

Bei dieser Herausforderung berechnen Sie, wie hoch Ihre Reputation wäre, wenn die Reputationsbeschränkung bei PPCG nicht vorhanden wäre.

Jeder kann auf die Rohdaten für Reputationsänderungen unter folgender Adresse zugreifen: codegolf.stackexchange.com/reputation . Die Rohdaten folgen einem solchen Setup (dies sind die ersten Zeilen meiner Version der Seite).

total votes: 2955
-- bonuses   (100)
 2     37663 (10)
-- 2014-09-11 rep +110  = 111       
 2     41751 (10)
-- 2014-11-23 rep +10   = 121       
 2     41751 (10)
 2     41751 (10)
-- 2014-11-24 rep +20   = 141       

Die erste Zeile ist für diese Herausforderung irrelevant (sie zeigt die Gesamtzahl der Stimmen, die Sie für alle Ihre Antworten und Fragen erhalten haben). Die zweite Zeile zeigt den "Assoziationsbonus". Wenn Sie den Bonus nicht haben, wird diese Linie überhaupt nicht da sein.

Nach diesen beiden Zeilen (oder einer, wenn kein Bonus) erhalten Sie eine Liste der Reputationsänderungen pro Frage sowie eine Zusammenfassung aller an jedem Tag gewonnenen / verlorenen Repräsentanten. Sie erhalten auch eine Liste der Gesamtreputation, die Sie am Ende dieses Tages haben. In dieser Liste werden nur Tage angezeigt, an denen sich Ihr Ruf geändert hat.

Am Anfang jeder Zeile befinden sich Bezeichner (mit Ausnahme der täglichen Zusammenfassungszeilen). Dies sind die folgenden möglichen Gründe für Reputationsänderungen:

1 : Accept (+2 if you accept, +15 if your answer is accepted)
2 : Upvote (+5 for question, +10 for answer)
3 : Downvote (-1 if you downvote answer, -2 if you get downvoted)
4 : Offensive (-100)
8 : Give bounty
9 : Receive bounty
12: Spam (-100)
16: Approved edit (+2)

Die fehlenden Nummern ( 5,6,7,10,11,13,14,15haben keinen Einfluss auf den Ruf).


Ihre Herausforderung besteht darin, die Reputation zu berechnen, die Sie ohne die Reputationsobergrenze hätten.


So machst du das:

Speichern Sie den Inhalt von codegolf.stackexchange.com/reputation lokal als einfachen Text oder an einem anderen Ort Ihrer Wahl (dies liegt daran, dass Sie angemeldet sein müssen, um auf die Informationen zugreifen zu können). Sie können die Daten auch direkt von der Website abrufen, obwohl ich davon ausgehe, dass dies viel länger dauern wird.

Fassen Sie alle positiven und negativen Reputationsänderungen zusammen. Stimmen, die (aufgrund der Wiederholungszahl) nicht zu einer Änderung der Reputation führen, werden wie folgt angezeigt (beachten Sie die eckigen Klammern anstelle der regulären Klammern):

 2    106125 [0]
 2    106125 [0]
 3    106125 [-2]
 2    106088 [2]
 2    106125 [0]
 2    106088 [0]

Sie müssen den Mitarbeiter angeben, den Sie erhalten hätten, wenn die Kappe nicht vorhanden gewesen wäre.

Post - Nummer 106125ist eine Frage , während 106088ist eine Antwort . Wie Sie sehen, können Sie den Unterschied zwischen beiden nicht nur anhand der in der Tabelle angegebenen Daten feststellen. Sie müssen daher auf die Website ( codegolf.stackexchange.com) zugreifen , um zu überprüfen, ob es sich bei einem Beitrag um eine Frage oder eine Antwort handelt. Sie können dafür auch die API verwenden.


Regeln:

  • Jeder muss in der Lage sein, Ihr Skript auszuführen.
    • Sie müssen alle unterschiedlichen Reputationsänderungstypen angeben, auch wenn Sie diese nicht selbst kennen.
    • Der Code muss funktionieren, auch wenn Sie den Assoziationsbonus nicht erhalten haben (die Zeile wird nicht dort sein, wenn Sie nicht erhalten haben)
    • Sie dürfen nicht-freie Sprachen (Mathematica, MATLAB usw.) verwenden, solange andere mit einer Lizenz den Code ausführen können.
    • Sie müssen die Rohdaten nicht angeben, da jeder Ihren Code auf seiner eigenen Version der Seite testen kann (es wird interessant sein, wenn Sie die Ergebnisse teilen, aber das ist optional).
  • Sie können die API verwenden oder direkt auf die Website zugreifen. URL-Shortener sind nicht erlaubt.
  • Wenn es andere Möglichkeiten gibt, den Repräsentanten zu finden, den Sie ohne die Repräsentantenkappe hätten, können Sie sie nicht verwenden. Sie müssen die Daten von der genannten Seite verwenden.

Beachten Sie, dass Posts, bei denen es sich um Antworten handelt, eine andere Erweiterung der URL erhalten:

/codegolf/106088        // Answer: Notice the end of the url
/codegolf/106079/detect-ms-windows/106088#106088

/codegolf/106079/       // Question: Notice the end of the url
/codegolf/106079/detect-ms-windows

Ausgabe:

Die Ausgabe sollte sein:

Rep w cap: 15440
Rep w/o cap: 16202

Das Format ist optional, [15440,16202]wird akzeptiert. Rep w capkann direkt aus der Zeile entnommen werden: ** total rep 15440 :)am unteren Rand der Seite.


Das ist also gewinnt der kürzeste Code in Byte.

Stewie Griffin
quelle
Verbunden.
Betseg
4
751. Reiß mich und mein Leben auf
Christopher
2
lol Ich habe noch nie den Repcap getroffen.
HyperNeutrino
Um es zu verdeutlichen, ist Ihr Ruf bei cap die Summe Ihrer gesamten Repräsentanten, und der Ruf ändert sich innerhalb der eckigen Klammern?
Graviton

Antworten:

3

Perl 5 (mit Locke), 209 + 1 (-n Flag) = 210 Bytes

if(/([0-9]+)\s*([0-9]+) \[([0-9]*)/){$_=`curl /codegolf//a/$2`;@p=(2,5,-1);$p[15]=2;@s=(13,5,-1);$x=$1;$r+=($p[--$x]//-100)-$3;$r+=$s[$x]if/#/;};$t=$1 if/([0-9]+) :/;END{say$t,$",$r+$t}

Missbraucht die Tatsache, dass die URL für eine Antwort eine enthält #. Kann -snachher eine Flagge hinzufügen, curlwenn Sie nicht möchten, dass stderr mit Fortschrittsbalken überflutet wird. Ich würde mich über jemanden freuen, der es auf einer Seite mit mehr Ruf getestet hat. Ich kann nicht sicher sein, dass ich nichts verpasst habe.

Meins ist 421 und würde übrigens 451 sein.

Chris
quelle
Ich habe Perl noch nie zuvor verwendet und kann nicht erkennen, woher Sie die Rohdaten beziehen. Wo lege ich die Rohdaten ab, wenn ich das testen möchte? Hinweis: Ich verwende Strawberry unter Windows 10. Ich habe weder Unix noch OS X. Und wie würde ich das nennen?
Stewie Griffin
@Stewie Griffin Liest die Rohdaten von stdin. Der Code ist ein Einzeiler und sollte in etwa so ausgeführt werden perl -nE 'code' < filename. Möglicherweise müssen Sie unter Windows andere Zitate und Escape-Vorgänge ausführen, da ich mit der Umgebung dort nicht sehr vertraut bin.
Chris
Kleine Optimierung: Sie können die entfernen , https://wenn Sie den Pass - -LFlag zu locken, so dass sie die 301 - Weiterleitung folgen
markasoftware
@Markasoftware Das wird aber den mehrfachen Weiterleitungen zur eigentlichen Seite folgen, oder? So wie es ist, analysiert mein Code /codegolf//a/$2eher die 301-Umleitung als die Seite selbst.
Chris
Ich bekomme, Search pattern not terminated at -e line 1.wenn ich das versuche. Ich füge einfach den gesamten Code mit dem ein, was du in comment ( perl -nE ..) geschrieben hast , während die Datei im aktuellen Arbeitsverzeichnis gespeichert ist. Irgendeine Idee, warum das sein könnte?
Stewie Griffin