Il y a quelques mois, nous avons eu une discussion sur les méta concernant l'augmentation de la réputation accordée aux votes positifs sur les questions. Voici les bases de notre système de réputation actuel pour les votes: 1
- Une note positive
U
vaut 5 points de réputation. - Une réponse upvote
u
vaut 10 points de réputation. - Une question ou une réponse downvote
d
vaut -2 de réputation.
Il y a eu de nombreuses suggestions différentes pour un nouveau système, mais le plus populaire actuellement est identique à ce qui précède, mais avec des votes positifs de questions mis à l'échelle à +10 rep. Ce défi consiste à calculer combien plus de représentants vous gagneriez si ce système était mis en place.
Regardons un exemple. Si l'activité de vote était UUUUuuuuUUUUUduuudUU
, alors vous gagneriez 121 selon le système actuel:
U x 4 x 5 = 20 = 20
u x 4 x 10 = 40 = 60
U x 5 x 5 = 25 = 85
d x 1 x -2 = -2 = 83
u x 3 x 10 = 30 = 113
d x 1 x -2 = -2 = 111
U x 2 x 5 = 10 = 121
Total: 121
Mais la même activité gagnerait 176 dans le nouveau système:
U x 4 x 10 = 40 = 40
u x 4 x 10 = 40 = 80
U x 5 x 10 = 50 = 130
d x 1 x -2 = -2 = 128
u x 3 x 10 = 30 = 158
d x 1 x -2 = -2 = 156
U x 2 x 10 = 20 = 176
Total: 176
Vous gagneriez 55 rep de ce scénario.
Jusqu'à présent, le calcul du représentant modifié n'est pas si difficile; il suffit de compter le nombre de U
s et de multiplier par 5. Heureusement, le système de représentation n'est pas aussi simple: il y a aussi un plafond de représentation , qui est la plus grande réputation que vous pouvez gagner grâce aux votes en une journée UTC. Il est fixé à 200 sur tous les sites.
De plus, le plafond de rep s'applique en temps réel: si vous avez déjà gagné 196 rep et que vous recevez une réponse upvote, vous aurez désormais 200 rep. Si vous obtenez un downvote juste après cela, le 2 rep sera soustrait de 200, vous aurez donc 198 rep.
Avec l'activité de vote UUUuuuuUUUUuuuuUUUUUUUd
, vous gagneriez 148 répétitions avec le système actuel:
U x 3 x 5 = 15 = 15
u x 4 x 10 = 40 = 55
U x 4 x 5 = 20 = 75
u x 4 x 10 = 40 = 115
U x 7 x 5 = 35 = 150
d x 1 x -2 = -2 = 148
Total: 148
Mais vous gagneriez 198 dans le nouveau système:
U x 3 x 10 = 30 = 30
u x 4 x 10 = 40 = 70
U x 4 x 10 = 40 = 110
u x 4 x 10 = 40 = 150
U x 7 x 10 = 70 = 200 (rep capped)
d x 1 x -2 = -2 = 198
Total: 198
Ainsi, l'augmentation est de 50 rep .
Défi
Votre défi consiste à écrire un programme ou une fonction qui prend une chaîne multi-lignes et génère le nombre total de répétitions qui serait obtenu avec l'algorithme ci-dessus. Chaque ligne compte pour 1 jour UTC, le plafond de répétition ne s'applique donc qu'une seule fois par ligne.
Cas de test
(Une ou plusieurs lignes d'entrée, suivies de l'entier de sortie.)
UUUuudd
15
UUUuUUUUuUuuUUUUudUUUUuU
57
UUUuUUUUuUuuUUUUudUUUUuU
UUUuudd
72
uuuuuuu
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
uuuuuuuuuuuuuuuuuuuu
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
0
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
5
(empty string)
0
UUUuuuuuUUUuuUUUUUUuuuUUUuuUUUUuuuuUUUdddddddUU
4
UUUuuuuuUUUuuUUUUUUuuuUUUuuUUUUuuuuUUUdddddddUU
UuuUUUudUU
UUUUUUUUUuuuuuuUUUUUUuuUUUUUUuuuuuUUUUUUUUuUUUuuuuUUUUuuuUUUuuuuuuUUUUUUUUuuUUUuuUU
UUu
U
d
UU
UUUUUUUUUUUU
119
C'est le golf de code, donc le code le plus court en octets gagne.
Défis connexes: Calculer la somme cumulée limitée d'un vecteur , Calculer votre réputation d'échange de pile
1 Il s'agit d'une version très simplifiée du système. Vous perdez également 1 représentant pour avoir voté contre une réponse, et il existe des non-votes, qui sont étranges et suivent leurs propres règles ; et les votes négatifs, qui n'ont même pas de règles à suivre .
la source
Réponses:
Perl,
10491 + 2 = 93 octetsNécessite le
-p
drapeau:Panne:
la source
ES6, 104 octets
Calcule le représentant avant et après pour chaque ligne. Ma première utilisation de
eval
!la source
Haskell,
9893 octetsMerci à BlackCap de continuer à jouer au golf. Maintenant, je pense que d'essayer lambda dans des défis ultérieurs, maintenant.
Les 3 premières lignes sont le score, a & b est le score, f est la différence et g est la fonction qui sastifie la spécification.
Usage:
la source
Lua, 196 octets
Ce programme prend un seul argument multi-lignes en entrée et affiche la différence totale en rep '
J'ai supposé que j'étais autorisé à demander une nouvelle ligne de fin dans l'entrée, si ce n'est pas le cas, voici une solution de 204 octets qui n'en a pas besoin.
Non golfé et explications
la source