Le défi
Votre objectif est d'écrire le programme le plus court possible qui prendra une liste d'événements (tels que les votes positifs, négatifs, etc.) et restituera la réputation de l'utilisateur et les privilèges qu'il a gagnés.
Quel genre d'événements?
Voici un tableau des événements, classés par ordre de réputation gagnée:
-15 answer unaccepted
-10 answer unupvoted
-5 question unupvoted
-2 answer downvoted
-2 question downvoted
-2 unaccept answer
-1 downvote answer
+1 join website
+1 undownvote answer
+2 accept answer
+2 question undownvoted
+2 answer undownvoted
+5 question upvoted
+10 answer upvoted
+15 answer accepted
+100 association bonus
Quelle sorte de privilèges?
Voici une liste de privilèges, par ordre de réputation requis.
1 create posts
5 participate in meta
10 remove new user restrictions
10 create wiki posts
15 vote up
15 flag posts
20 talk in chat
50 comment everywhere
75 set bounties
100 edit community wiki
100 create chat rooms
125 vote down
150 create tags
200 retag questions
250 view close votes
500 cast close and reopen votes
750 established user
1000 edit questions and answers
1000 create gallery chat rooms
1250 create tag synonyms
1500 approve tag wiki edits
2000 access to moderator tools
3500 protect questions
4000 trusted user
Contribution
L'entrée (sur STDIN) sera une liste d'événements, un par ligne, exactement comment ils apparaissent dans le premier graphique (à l'exception du montant de la réputation). Une ligne vierge représente la fin de l'entrée. Voici un exemple (il devrait y avoir une ligne vide à la fin):
join website
association bonus
answer upvoted
answer upvoted
question upvoted
answer accepted
answer upvoted
accept answer
unaccept answer
question unupvoted
accept answer
question upvoted
Production
La première ligne de sortie (vers STDOUT) doit nommer la quantité de répétitions accumulées. Chaque ligne après cela doit répertorier un privilège gagné, exactement tel qu'il apparaît et dans le même ordre que le deuxième graphique. La sortie attendue pour l'entrée ci-dessus:
153 reputation
1 create posts
5 participate in meta
10 remove new user restrictions
10 create wiki posts
15 vote up
15 flag posts
20 talk in chat
50 comment everywhere
75 set bounties
100 edit community wiki
100 create chat rooms
125 vote down
150 create tags
Règles, restrictions et notes
C'est le golf de code. Les règles de golf à code standard s'appliquent.
(EDIT: Étant donné que j'ai eu deux entrées qui accèdent aux fichiers, je voudrais souligner que la longueur du fichier doit être ajoutée à la longueur du code dans le cadre des règles standard pour le golf de code)