Jaka byłaby twoja reputacja bez ograniczenia liczby przedstawicieli?

16

W tym wyzwaniu obliczysz, jaka byłaby Twoja reputacja, gdyby limit PPPG nie istniał.

Każdy może uzyskać dostęp do rawdata w celu zmiany reputacji na adres: codegolf.stackexchange.com/reputation . Surowe dane są zgodne z taką konfiguracją (są to pierwsze wiersze mojej wersji strony.

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       

Pierwszy wiersz nie ma znaczenia dla tego wyzwania (pokazuje całkowitą liczbę głosów, które otrzymałeś na wszystkie odpowiedzi i pytania). Druga linia pokazuje „Bonus stowarzyszenia”. Jeśli nie masz premii, ta linia w ogóle jej nie będzie.

Po tych dwóch (lub jednym, jeśli nie ma bonusu) wierszach, pojawi się lista zmian reputacji dla każdego pytania, wraz z podsumowaniem wszystkich powtórzeń uzyskanych / utraconych każdego dnia. Pod koniec tego dnia otrzymasz także listę całkowitej reputacji. Tylko dni, w których zmieniła się Twoja reputacja, są wyświetlane na tej liście.

Na początku każdego wiersza znajdują się identyfikatory (oprócz codziennych wierszy podsumowania). Są to następujące potencjalne przyczyny zmiany reputacji:

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)

Brakujące liczby ( 5,6,7,10,11,13,14,15nie wpływają na reputację).


Twoim wyzwaniem jest obliczenie reputacji, którą miałbyś, gdyby nie ograniczenie reputacji.


Jak to zrobisz:

Zapisz treść codegolf.stackexchange.com/reputationjako zwykły tekst lokalnie lub w innym wybranym przez siebie miejscu (dzieje się tak, ponieważ musisz być zalogowany, aby uzyskać dostęp do informacji). Możesz pobrać dane ze strony internetowej, jeśli wolisz, ale zakładam, że będzie to znacznie dłużej.

Podsumuj wszystkie pozytywne i negatywne zmiany reputacji. Głosy, które nie powodują zmiany reputacji (z powodu ograniczenia liczby powtórzeń) są wyświetlane w następujący sposób (zwróć uwagę na nawiasy kwadratowe zamiast zwykłych nawiasów):

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

Musisz dołączyć przedstawiciela, który byś otrzymał, gdyby nie ograniczenie.

Numer post 106125to pytanie , podczas gdy 106088jest to odpowiedź . Jak widać, nie ma sposobu, aby określić różnicę między nimi, używając tylko danych podanych w tabeli. Musisz zatem uzyskać dostęp do strony internetowej ( codegolf.stackexchange.com), aby sprawdzić, czy post jest pytaniem lub odpowiedzią. Możesz również użyć interfejsu API do tego.


Zasady:

  • Każdy musi mieć możliwość uruchomienia skryptu, aby:
    • Musisz uwzględnić wszystkie rodzaje zmian reputacji, nawet jeśli sam tego nie spotkałeś.
    • Kod musi działać, nawet jeśli nie otrzymałeś premii Stowarzyszenia (linia nie będzie tam, jeśli nie masz)
    • Możesz używać niewolnych języków (Mathematica, MATLAB itp.), O ile inne osoby posiadające licencję mogą uruchamiać kod.
    • Nie musisz podawać nieprzetworzonych danych, ponieważ każdy może przetestować kod na własnej wersji strony (ciekawe będzie, jeśli udostępnisz wyniki, ale jest to opcjonalne).
  • Możesz użyć interfejsu API lub uzyskać bezpośredni dostęp do strony internetowej. skracacze adresów URL są niedozwolone.
  • Jeśli istnieją inne sposoby znalezienia przedstawiciela bez rep cap, nie możesz go użyć. Musisz użyć danych ze wspomnianej strony.

Pamiętaj, że posty będące odpowiedziami mają inne rozszerzenie do adresu URL:

/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

Wynik:

Dane wyjściowe powinny być:

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

Format jest opcjonalny, [15440,16202]jest akceptowany. Rep w capmożna pobrać bezpośrednio z wiersza: ** total rep 15440 :)u dołu strony.


To jest więc wygrywa najkrótszy kod w bajcie.

Stewie Griffin
źródło
Związane z.
betseg 30.04.17
4
751. Rozerwij mnie i moje życie
Christopher
2
lol Nigdy wcześniej nie uderzyłem w repcap.
HyperNeutrino
Żeby wyjaśnić, twoja reputacja z cap jest sumą twojego całkowitego powtórzenia, a reputacja zmienia się w nawiasach kwadratowych?
Graviton

Odpowiedzi:

3

Perl 5 (z zawinięciem), 209 + 1 (flaga -n) = 210 bajtów

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}

Nadużywa faktu, że ma adres URL odpowiedzi #. Można dodać -sflagę później, curljeśli nie lubisz, gdy stderr jest zalewany paskami postępu. Byłbym wdzięczny za testowanie strony o bardziej zróżnicowanej reputacji - nie jestem pewien, że niczego nie przegapiłem.

Nawiasem mówiąc, mój ma 421, a 451.

Chris
źródło
Nigdy wcześniej nie korzystałem z Perla i nie widzę, skąd bierzesz rawdata. Gdzie umieścić surowe dane, jeśli chcę to przetestować? Uwaga: używam Strawberry na Windows 10. Nie mam Uniksa ani OS X. Jak to nazwać?
Stewie Griffin
@Stewie Griffin Odczytuje surowe dane ze standardowego wejścia. Kod jest jednowierszowy i powinien być wykonywany w podobny sposób perl -nE 'code' < filename. Być może będziesz musiał zrobić kilka różnych cytatów i ucieczki od rzeczy w systemie Windows, nie znam się zbyt dobrze na środowisku.
Chris
Mała optymalizacja: możesz usunąć https:// jeśli podasz -Lflagę do zwijania się, pozwalając jej na podążanie za przekierowaniem 301
markasoftware
@Markasoftware To będzie po wielu przekierowaniach do faktycznej strony, prawda? W tej chwili mój kod analizuje przekierowanie 301/codegolf//a/$2 samej strony.
Chris
Rozumiem, Search pattern not terminated at -e line 1.kiedy próbuję tego. Po prostu wklejam cały kod, używając tego, co napisałeś w komentarzu ( perl -nE ..), jednocześnie zapisując plik w bieżącym katalogu roboczym. Wiesz, dlaczego to może być?
Stewie Griffin,