Hintergrund:
Ich stelle oft fest, dass ich mich beim Durchsuchen einer Stackexchange-Site frage, wie die Leute zu dem Ansehen kommen, das sie haben. Ich weiß, ich kann mich immer darauf verlassen, dass codegolf SE meine Probleme löst.
Erstellen Sie ein Programm, das eine positive Ganzzahl akzeptiert, die den Ruf einer Person repräsentiert. Wir werden Kopfgelder ignorieren und sagen, dass dies die einzige Möglichkeit ist, Wiederholungen auf SE zu gewinnen / zu verlieren (vollständige Tabelle hier ):
- Jedes Konto beginnt mit 1 Wiederholung und kann nicht darunter liegen
- Ihre Frage wurde positiv bewertet = +5
- Ihre Antwort wurde positiv bewertet = +10
- Ihre Frage ist downvoted = -2
- Deine Antwort ist downvoted = -2
- Sie haben eine Antwort = -1 abgelehnt
- Ihre Antwort wird angenommen = +15
- Sie akzeptieren eine Antwort = +2
Ihr Programm muss herausfinden, wie viele dieser Aktionen auf dem Konto dieses Benutzers ausgeführt wurden, um zu dem Vertreter zu gelangen, den sie haben. Es muss die kürzeste Anzahl von Aktionen ermittelt werden, um diese Wiederholungsstufe zu erreichen. Beispiele:
Input: 11 Output: 1 Antwort upvote
Eingabe: 93 Ausgabe: 6 Antworten akzeptiert, 1 Antwort akzeptiert
Wenn ich in diesen Beispielen "Frage nach oben" sage, bedeutet dies, dass die Quest der Person nach oben bewertet wurde. Wenn ich sage, dass die Antwort abgelehnt wurde, bedeutet dies, dass sie die Antwort eines anderen abgelehnt haben.
Regeln:
Code-Golf , also gewinnt der kürzeste Code, der dies kann.
Antworten:
Golfscript,
162144 BytesWie es funktioniert
Die allgemeine Idee ist genau die gleiche wie in meiner Bash-Antwort .
quelle
Bash,
247202192 BytesWie es funktioniert
Nachdem der sed- Befehl seinen Job ausgeführt hat, wird das folgende Bash-Skript ausgeführt:
Um die optimale Lösung zu erhalten (minimale Anzahl von Ereignissen, um eine
n
Reputation zu erhalten ), reicht es aus, die Anzahl der akzeptierten Antworten (a
) zu berechnen, die erforderlich sind, um eine Reputation unter 16 zu erreichen (1 Antwort akzeptieren), und den Rückstand wie folgt zu behandeln:quelle
-2
und-1
downvotes.Perl,
500263256208 BytesSkript
rep.pl
:Verwendung
Die Eingabe wird als positive Ganzzahl erwartet, die dem Skript als Argument übergeben wird. Die verschiedenen Aktionen werden als Zeilen ausgegeben.
Tests
Ungolfed
Ältere Version
Bearbeitungen
S
nicht mehr benötigt.E
nicht mehr benötigt.quelle
R
454421Vielen Dank an Dennis für seine Antwort, die mir sehr geholfen hat.
Ungolfed-Version
quelle
JavaScript -
270237227206192 ZeichenGenau so viele Zeichen wie Bash (yeah!), Und schlägt Python und Perl :) Es verringert die Reputation, bis
14
es die anderen erforderlichen Aktionen ausführt, vollständig im Loop-Stil.EDIT 1: Konvertiert
\n
s in,
s und konvertiert einenif
Block in ternäre und bessere Bodenbeläge mit Kurznamen.EDIT 2: Vielen Dank an Alconja , die mir geholfen hat, 11 Zeichen zu reduzieren . Danach habe ich noch einige Korrekturen vorgenommen, um 2 weitere Zeichen zu reduzieren.
Ältere Version:
Prüfung:
INPUT:
42
OUTPUT:
INPUT:
1337
OUTPUT:
Ungolfed Code:
quelle
function name(args){}
wirdname=(args)=>{}
und spart somit eine Menge Bytes.q
einmal verwendet, sodass Sie sie einbinden können. Sie können diec
Variable auch löschen undr%=15
stattdessen ausführenr-=c*15
. Sollte Sie auf 195 Zeichen bringen (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)
).Game Maker Language, 276
quelle
C # - 391
Ein bisschen lang, und ich habe das nicht gründlich (viel) getestet. :)
Ungolfen - NEU
Ungolfen - ALT (409)
Prüfung:
quelle
Python -
213207Verfluchen Sie lange Funktionsnamen!
Beispiel: (ignorieren Sie die nachfolgende Newline)
quelle
EOF
. Können Sie mich bitte auf einen Compiler verweisen, der funktioniert (und den ich zum späteren Nachschlagen aufbewahren sollte)?C ++, 276 (316 W / Includes)
Kompiliert mit GCC mit Warnungen. Beispiel:
Sie können dies auf eine Sprache portieren, für die keine Typdeklarationen erforderlich sind, und als Ihre eigene Sprache veröffentlichen.
quelle
JavaScript -
273256235Kombinierte Berechnung und Ausgabe und Golf weiter auf insgesamt 287.
Bearbeiten: einige Variablen für einige kürzere herausgenommen.
Math.Floor für | 0-Ansatz entfernt.
Initialisierung zum prompt () - Parameter verschoben, einige Klammern entfernt, Warnung mit abschließendem String-Anhang.
quelle
prompt
den Wert also verwenden und können ihn nicht hart codieren.Python3, 188B
Verwendung:
python3 score.py <ret> 11 <ret>
Hier wird dieses Skript als score.py gespeichert.Beispielausgabe:
quelle