Contexte:
Je trouve souvent que, lorsque je navigue sur un site Stackexchange, je commence à me demander comment les gens obtiennent la réputation qu'ils ont. Je sais que je peux toujours compter sur codegolf SE pour résoudre mes problèmes, alors voici:
Créez un programme qui acceptera un entier positif qui représente la réputation d'une personne. Nous ignorerons les primes et dirons que ce sont les seuls moyens de gagner / perdre des représentants sur SE (tableau complet ici ):
- Chaque compte commence avec 1 répétition et ne peut pas descendre en dessous
- Votre question est votée positivement = +5
- Votre réponse est votée positivement = +10
- Votre question est downvoted = -2
- Votre réponse est downvoted = -2
- Vous dévaluez une réponse = -1
- Votre réponse est acceptée = +15
- Vous acceptez une réponse = +2
Votre programme doit déterminer le nombre de ces actions qui se sont produites sur le compte de cet utilisateur pour obtenir le représentant qu'il a. Il doit déterminer le nombre d'actions le plus court pour atteindre ce niveau de représentation. Exemples:
Entrée: 11 Sortie: 1 réponse vote positif
Entrée: 93 Sortie: 6 réponses acceptées, 1 réponse acceptée
Dans ces exemples, quand je dis «question upvote», cela signifie que le queston de cette personne a été voté positivement. Quand je dis «réponse downvoted», cela signifie qu'ils ont downvoted la réponse de quelqu'un d'autre.
Règles:
code-golf , donc le code le plus court qui peut le faire gagne.
Réponses:
Golfscript,
162144 octetsComment ça fonctionne
L'idée générale est exactement la même que dans ma réponse Bash .
la source
Bash,
247202192 octetsComment ça fonctionne
Une fois la commande sed terminée , le script bash suivant est exécuté:
Pour obtenir la solution optimale (nombre minimal d'événements pour obtenir une
n
réputation), il suffit de calculer le nombre de réponses acceptées (a
) nécessaires pour atteindre une réputation inférieure à 16 (1 réponse acceptée) et de gérer le résidu comme suit:la source
-2
et les-1
votes négatifs.Perl,
500263256208 octetsScript
rep.pl
:Usage
L'entrée est attendue comme un entier positif, donné comme argument au script. Les différentes actions sont sorties sous forme de lignes.
Les tests
Non golfé
Ancienne version
Modifications
S
n'est plus nécessaire.E
n'est plus nécessaire.la source
R,
454421Merci à Dennis pour sa réponse qui m'a beaucoup aidé.
Version non golfée
la source
JavaScript -
270237227206192 caractèresExactement autant de caractères que Bash (ouais!), Et bat Python et Perl :) Cela réduit la réputation jusqu'à
14
ce qu'il prenne après quoi il prend les autres actions nécessaires, complètement en boucle.EDIT 1: Converti
\n
s en,
s et converti unif
bloc en ternaire, et meilleur revêtement de sol avec des noms courts.EDIT 2: Un grand merci à Alconja qui m'a aidé à réduire 11 caractères. Après quoi j'ai apporté quelques corrections supplémentaires pour réduire 2 caractères supplémentaires.
Ancienne version:
Tester:
ENTRÉE:
42
SORTIE:
ENTRÉE:
1337
SORTIE:
Code non golfé:
la source
function name(args){}
devientname=(args)=>{}
et économise donc beaucoup d'octets.q
qu'une seule fois, vous pouvez donc l'intégrer. De plus, vous pouvez supprimer lac
variable et faire unr%=15
au lieu der-=c*15
. Cela devrait vous ramener à 195 caractères (r=prompt()-1,a="1answer ",v="vote,";s=(r/15|0)+"answer accept,",r%=15;if(r>9)s+=a+"+"+v,r-=10;if(r>2)s+="1question +"+v,r-=5;r>0?s+=a+"accepted,":0;if(r<-1)s+=a+"-"+v;r&1?s+=a+"-voted":0;alert(s)
).Langue de Game Maker, 276
la source
C # - 391
Un peu long, et je n'ai pas testé ça à fond (beaucoup). :)
Non golfé - NOUVEAU
Non golfé - VIEUX (409)
Tester:
la source
Python -
213207Maudissez-vous les noms de fonction longs!
Exemple: (ignorer la nouvelle ligne de fin)
la source
EOF
. Pouvez-vous s'il vous plaît me pointer vers un compilateur qui fonctionne (et que je devrais conserver pour référence future)?C ++, 276 (316 avec / avec)
Compile avec GCC, avec des avertissements. Exemple:
N'hésitez pas à le porter dans une langue qui ne nécessite pas de déclarations de type et à le publier comme le vôtre.
la source
JavaScript -
273256235Calcul et sortie combinés, et golf plus loin pour un total de 287.
Edit: a supprimé certaines variables pour quelques plus courtes.
Suppression de Math.Floor pour l'approche | 0.
Déplacement d'une certaine initialisation vers le paramètre prompt (), suppression de quelques crochets, alerte avec l'ajout de la chaîne finale.
la source
prompt
et ne pouvez pas coder en dur la valeur.Python3, 188B
Utilisation:
python3 score.py <ret> 11 <ret>
où ce script est enregistré sous score.py.Exemple de sortie:
la source