Dans ce défi, vous calculerez votre réputation si le plafond de réputation n'existait pas sur PPCG.
Tout le monde peut accéder aux données brutes pour les changements de réputation sur l'adresse: codegolf.stackexchange.com/reputation . Les données brutes suivent une configuration comme celle-ci (ce sont les premières lignes de ma version de la page.
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 première ligne n'est pas pertinente pour ce défi (elle indique le nombre total de votes que vous avez reçus sur toutes vos réponses et questions). La deuxième ligne affiche le "Bonus d'association". Si vous n'avez pas le bonus, cette ligne ne sera plus là.
Après ces deux (ou une, si aucun bonus) lignes, vous aurez une liste des changements de réputation par question, ainsi qu'un résumé de tous les représentants gagnés / perdus chaque jour. Vous obtiendrez également une liste de la réputation totale que vous avez à la fin de cette journée. Seuls les jours où votre réputation a changé sont affichés dans cette liste.
Il y a des identifiants au début de chaque ligne (sauf les lignes récapitulatives quotidiennes). Ceux-ci représentent les raisons de changement de réputation potentielles suivantes:
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)
Les numéros manquants ( 5,6,7,10,11,13,14,15
n'affectent pas la réputation).
Votre défi consiste à calculer la réputation que vous auriez, sans le plafond de réputation.
Comment allez-vous faire cela:
Enregistrez le contenu de codegolf.stackexchange.com/reputation
sous forme de texte brut localement, ou à un autre endroit de votre choix (c'est parce que vous devez être connecté pour accéder aux informations). Vous pouvez récupérer les données directement sur le site Web si vous préférez, bien que je suppose que ce sera beaucoup plus long.
Résumez tous les changements de réputation positifs et négatifs. Les votes qui n'entraînent pas de changement de réputation (en raison du plafond des représentants) sont affichés comme ceci (notez les crochets, au lieu des parenthèses régulières):
2 106125 [0]
2 106125 [0]
3 106125 [-2]
2 106088 [2]
2 106125 [0]
2 106088 [0]
Vous devez inclure le représentant que vous auriez reçu sans le plafond.
Numéro de message 106125
est une question , tout 106088
est une réponse . Comme vous pouvez le voir, il n'y a aucun moyen de faire la différence entre les deux en utilisant uniquement les données fournies dans le tableau. Vous devez donc accéder au site ( codegolf.stackexchange.com
) pour vérifier si un message est une question ou une réponse. Vous pouvez également utiliser l'API pour cela.
Règles:
- Tout le monde doit pouvoir exécuter votre script pour:
- Vous devez inclure tous les différents types de changement de réputation, même si vous ne l'avez pas rencontré vous-même.
- Le code doit fonctionner même si vous n'avez pas reçu le bonus Association (la ligne ne sera pas là si vous ne l'avez pas)
- Vous pouvez utiliser des langues non libres (Mathematica, MATLAB etc.), tant que d'autres avec une licence peuvent exécuter le code.
- Vous n'êtes pas obligé de fournir les données brutes, car tout le monde peut tester votre code sur sa propre version de la page (ce sera intéressant si vous partagez les résultats, mais c'est facultatif).
- Vous pouvez utiliser l'API ou accéder directement au site Web. les raccourcisseurs d'url ne sont pas autorisés.
- S'il existe d'autres façons de trouver le représentant que vous auriez sans le capuchon de représentant, vous ne pouvez pas l'utiliser. Vous devez utiliser les données de la page mentionnée.
Notez que les messages qui sont des réponses reçoivent une extension différente de 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
Production:
La sortie doit être:
Rep w cap: 15440
Rep w/o cap: 16202
Le format est facultatif, [15440,16202]
est accepté. Rep w cap
peut être pris directement à partir de la ligne: ** total rep 15440 :)
près du bas de la page.
Il s'agit de code-golf, donc le code le plus court en octets l'emporte.
la source
Réponses:
Perl 5 (avec curl), 209 + 1 (indicateur -n) = 210 octets
Abuse le fait que l'url d'une réponse contient un
#
. Peut ajouter un-s
indicateur aprèscurl
si vous n'aimez pas que stderr soit inondé de barres de progression. J'apprécierais quelqu'un avec une page de réputation plus variée le testant - je ne peux pas être sûr de ne rien avoir manqué.Le mien est 421 et serait 451, soit dit en passant.
la source
perl -nE 'code' < filename
. Vous devrez peut-être faire des citations différentes et échapper à des choses sur Windows, je ne suis pas très familier avec l'environnement là-bas.https://
si vous passez le-L
drapeau à curl, lui permettant de suivre la redirection 301/codegolf//a/$2
plutôt que la page elle-même.Search pattern not terminated at -e line 1.
quand j'essaye. Je colle simplement tout le code en utilisant ce que vous avez écrit dans le commentaire (perl -nE ..
), tout en ayant le fichier enregistré dans le répertoire de travail actuel. Une idée pourquoi cela pourrait être?