Die Regeln
Es ist Zeit, einen Tippgeschwindigkeitstest in der Sprache Ihrer Wahl zu erstellen!
1 . Sie stellen einer Datei ein Wörterbuch Ihrer Wahl zur Verfügung (jedes 'Wort' muss durch Zeilenumbrüche getrennt sein). Pipe es in via stdin
oder gib seinen Namen als Kommandozeilenargument an.
ein fähig Über über Abwesenheit ...
2 . Wählen Sie 10 zufällige Wörter aus der Datei aus (es dürfen keine Duplikate zulässig sein) und drucken Sie sie folgendermaßen aus:
-> direkt -> Boden -> weiter -> fünf ...
3 . Messen Sie ab sofort die aufgewendete Zeit!
4 . Lassen Sie den Benutzer alle zehn Wörter so schnell wie möglich eingeben (endete mit einem Wagenrücklauf). Drucken OK
Sie, wenn Sie eine Übereinstimmung haben, drucken Sie, WRONG
wenn ein Tippfehler vorliegt (oder das Wort wurde in diesem Lauf bereits erfolgreich eingegeben).
5 . Stoppen Sie die Uhren! Drucken Sie nun den CPM- Benchmark (Zeichen pro Minute) aus, der wie folgt berechnet wird : (sum of the characters of the chosen words / time spent typing (seconds)) * 60
. Runden Sie auf die nächste Ganzzahl und reproduzieren Sie die folgende (Beispiel-) Ausgabe:
-> Sie haben 344 CPM erzielt!
Ein Probelauf
-> erledigen -> Seite -> öffnen -> Minister -> Risiko -> Farbe -> Schiff -> gleich -> Größe -> Schwert sich niederlassen in Ordnung Seite in Ordnung öffnen in Ordnung # ...................... einige Zeilen wurden abgeschnitten ...................... Wort FALSCH Schwert in Ordnung -> Sie haben 298 CPM erzielt!
Der Gewinner
Dies ist Code Colf, der kürzeste Eintrag (in der Anzahl der Quellcode-Zeichen) gewinnt, viel Spaß!
Antworten:
K, 146
Nimmt eine Wörterbuchdatei mit dem Namen 'd' im aktuellen Arbeitsverzeichnis an.
quelle
K
Ich habe gesehen (hier auf codegolf.se) ...Bash -
217212199196 ZeichenIch werde nicht gewinnen, aber es hat Spaß gemacht
Jetzt unter 200 Zeichen!
Nimmt die Wortlistendatei als Argument. Nimmtjetzt die Wortliste für die Standardeingabe. Fügen Sie es in das Terminal ein und drücken Sie ^ D.Vorschlag von Manatwork implementiert
quelle
$SECONDS
Shell-Variable verwenden, um die Berechnung der verstrichenen Zeit zu vereinfachen.:
in der Standardwertparametererweiterung; 2) die$
vorSECONDS
in der arithmetischen Auswertung. Tatsächlich gibt es ein weiteres zusätzliches Zeichen, den Zeilenumbruch am und der Datei.Ruby (
189178171168)Ziemlich einfach, ich bin sicher, dass Verbesserungen vorgenommen werden müssen. Nimmt den Dateinamen des Wörterbuchs als Befehlszeilenargument.
BEARBEITEN : Ein paar kleinere Änderungen, hauptsächlich um die Zeilenumbrüche aus dem Wörterbuch beizubehalten. Infolgedessen benötigt die Datei einen nachgestellten Zeilenumbruch, um ordnungsgemäß zu funktionieren.
quelle
C 305
309347ZeichenVielen Dank an @ugoren für die Verbesserungshinweise. Die Verwendung eines "11. Wortes" zum Verwerfen eingehender Wörterbucheinträge war ein großer Gewinn gegenüber meinem vorherigen strcpy-if-selected-Ansatz.
Hier ist die Quelle ohne Wolf:
quelle
main(n,v)char**v;{...
. 2.stdin
kann seinchar *
.fgets(buf,len,stdin)
=gets(buf)
(egal die Pufferüberläufe). 3. Was ist los mitrand()%i
?RAND_MAX
wird nicht benötigt. 4. Warumlong
?t=time(0)
->time(&t)
. 2)n*60/(time(0)-t)
hat Klammern, die gehen müssen -*60
kann dann verschobenn+=60*printf
werdenn/=time(0)-t
. 3) Durchb
ein zusätzliches Elementw
ersetzen, durchstrcpy
direkt einlesen ersetzenw
.fgets()
durchgets()
erfordert zusätzlichen Code, um die Zeilenumbrüche im Wörterbuch zu verarbeiten. diese endete kürzer.rand()%i
ist nicht ausreichend; Die eigentliche Berechnung ist(double)i*rand()/RAND_MAX
. Wenn Sie das*60
zum printf verschieben, müssen Sie auch das-4
to ändern ,-240
damit letztendlich ein Verlust entsteht. Ihre anderen Punkte sind jedoch gültig (glaube ich). Oh, und daslong
liegt daran, dass time_t traditionell lang ist. Nur weil wir Golf spielen, heißt das nicht, dass wir nicht tragbar sein können.4
->240
... Portabilität und Golf passen nicht gut zusammen. Das Definiereni,t;
(implizit int) ist jedoch bis zuMAX_INT
Sekunden in Ordnung (wenn Sie es nicht verwendentime(&t)
). Mitrand()
, alles was Sie brauchen eine10/i
Chance, undrand()%i<10
es tut.rand()%10>10
, was 100% ergibt.rand()%(i+1)>9
ist besser (aber stattdessen, wenn%(i+1)
jai++>9?
. Bewegen Sie*stdin
sich auch als Erster und sparen Sie Platz.C # 401
Laufende Version hier: http://ideone.com/Nt6Id
quelle
Python (
256235)Dies ist in Python 2.x, in 3.x kann ich 4 weitere Zeichen mit der Druckfunktion rasieren.
Zeilenumbrüche enthalten
quelle
z=lambda x:
zudef z(x):
.len(x)
unddef z(x):return
ist 5 weitere Charaktere: /input()
sys.argv[1].read()
PHP 187 Bytes
Aus Gründen der Übersichtlichkeit wurden neue Zeilen hinzugefügt:
Akzeptiert den Dateinamen des Wörterbuchs als Befehlszeilenargument. Die Wörterbuchdatei muss mit einem Zeilenumbruch enden.
quelle
Scala (
319306304302)quelle