Quale sarebbe la tua reputazione senza il limite di reputazione?


16

In questa sfida, calcolerai quale sarebbe la tua reputazione, se il limite di reputazione non esistesse su PPCG.

Tutti possono accedere ai dati grezzi per i cambiamenti di reputazione sull'indirizzo: codegolf.stackexchange.com/reputation . I dati non elaborati seguono una configurazione come questa (queste sono le prime righe della mia versione della pagina.

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       

La prima riga è irrilevante per questa sfida (mostra il numero totale di voti che hai ricevuto su tutte le tue risposte e domande). La seconda riga mostra il "bonus di associazione". Se non hai il bonus, quella linea non ci sarà affatto.

Dopo queste due (o una riga, se non ci sono bonus), avrai un elenco di cambiamenti di reputazione per domanda, insieme a un riepilogo di tutti i rappresentanti guadagnati / persi ogni giorno. Riceverai anche un elenco della reputazione totale che hai alla fine di quel giorno. In questo elenco vengono visualizzati solo i giorni in cui la tua reputazione è cambiata.

Ci sono identificatori all'inizio di ogni riga (tranne le righe di riepilogo giornaliere). Questi rappresentano i seguenti potenziali motivi di cambiamento di reputazione:

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)

I numeri mancanti ( 5,6,7,10,11,13,14,15non influiscono sulla reputazione).


La tua sfida è calcolare la reputazione che avresti, se non fosse per il limite di reputazione.


Come lo farai:

Salvare il contenuto codegolf.stackexchange.com/reputationcome testo normale localmente o in un altro luogo di propria scelta (questo è perché è necessario aver effettuato l'accesso per accedere alle informazioni). Puoi recuperare i dati direttamente dal sito Web se preferisci, anche se presumo che sarà molto più lungo.

Riassumi tutti i cambiamenti di reputazione positivi e negativi. I voti che non comportano un cambio di reputazione (a causa del limite di ripetizione) sono mostrati in questo modo (notare le parentesi quadre, invece delle normali parentesi):

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

Devi includere il rappresentante che avresti ricevuto se non fosse stato per il limite.

Il numero di post 106125è una domanda , mentre 106088è una risposta . Come puoi vedere, non c'è modo di dire la differenza tra i due usando solo i dati riportati nella tabella. È pertanto necessario accedere al sito Web ( codegolf.stackexchange.com) per verificare se un post è una domanda o una risposta. Puoi anche usare l'API per questo.


Regole:

  • Tutti devono essere in grado di eseguire il tuo script in modo che:
    • È necessario includere tutti i diversi tipi di modifica della reputazione, anche se non lo si è verificato da soli.
    • Il codice deve funzionare anche se non hai ricevuto il bonus dell'Associazione (la linea non sarà presente se non l'hai ancora fatto)
    • È possibile utilizzare lingue non libere (Mathematica, MATLAB ecc.), A condizione che altri con una licenza possano eseguire il codice.
    • Non è necessario fornire i dati non elaborati, poiché tutti possono testare il codice sulla propria versione della pagina (sarà interessante se condividi i risultati, ma è facoltativo).
  • È possibile utilizzare l'API o accedere direttamente al sito Web. non sono ammessi abbreviazioni di URL.
  • Se ci sono altri modi per trovare il rappresentante che avresti senza il tappo del rappresentante, non puoi usarlo. Devi usare i dati dalla pagina menzionata.

Tieni presente che i post con risposta ottengono un'estensione diversa per l'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

Produzione:

L'output dovrebbe essere:

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

Il formato è facoltativo, [15440,16202]è accettato. Rep w cappuò essere preso direttamente dalla linea: ** total rep 15440 :)vicino alla fine della pagina.


Questo è quindi vince il codice più corto in byte.



4
751. Rip me and my life
Christopher

2
lol Non ho mai colpito il repcap prima.
HyperNeutrino,

Solo per chiarire, la tua reputazione con cap è la somma del tuo rappresentante totale e la reputazione cambia tra parentesi quadre?
Graviton,

Risposte:


3

Perl 5 (con arricciatura), 209 + 1 (-n flag) = 210 byte

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}

Abusa del fatto che l'URL per una risposta abbia un #in esso. Puoi aggiungere una -sbandiera dopo curlse non ti piace che stderr sia inondato di barre di avanzamento. Gradirei qualcuno con una pagina di reputazione più varia a testarlo - Non posso essere sicuro di non aver perso nulla.

Il mio è 421 e sarebbe 451, comunque.


Non ho mai usato Perl prima e non riesco a vedere da dove prendi i dati grezzi. Dove posso mettere i dati grezzi se voglio provarlo? Nota: sto usando Strawberry su Windows 10. Non ho Unix o OS X. E come lo chiamerei?
Stewie Griffin,

@Stewie Griffin Legge i dati grezzi da stdin. Il codice è a riga singola e dovrebbe essere eseguito in modo simile perl -nE 'code' < filename. Potrebbe essere necessario fare alcune citazioni e fughe di cose diverse su Windows, non ho molta familiarità con l'ambiente lì.
Chris,

Piccola ottimizzazione: è possibile rimuovere il https://se si passa la -Lbandiera per arricciarsi, consentendogli di seguire il reindirizzamento 301
markasoftware

@Markasoftware Che seguirà i reindirizzamenti multipli alla pagina effettiva, giusto? Così com'è, il mio codice analizza il reindirizzamento 301 /codegolf//a/$2piuttosto che la pagina stessa.
Chris,

Ottengo Search pattern not terminated at -e line 1.quando provo questo. Ho semplicemente incollato l'intero codice usando ciò che hai scritto nel commento ( perl -nE ..), pur avendo il file salvato nella directory di lavoro corrente. Qualche idea sul perché potrebbe essere?
Stewie Griffin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.