Les règles
Il est temps de créer un test de vitesse de frappe dans la langue de votre choix!
1 . Vous fournissez un fichier avec un dictionnaire de choix (chaque «mot» qu'il contient doit être délimité par des sauts de ligne). Canalisez-le via stdin
ou fournissez son nom comme argument de ligne de commande.
une capable sur au dessus de absence ...
2 . Choisissez 10 mots au hasard dans le fichier (aucun doublon ne doit être autorisé) et imprimez-les de la manière suivante:
-> direct -> moulu -> suivant -> cinq ...
3 . Commencez à mesurer le temps passé à partir de maintenant!
4 . Laissez l'utilisateur saisir les dix mots le plus rapidement possible (terminé par un retour chariot). Imprimez OK
lorsque vous avez une correspondance, imprimez WRONG
lorsque nous avons une erreur de frappe (ou que le mot a déjà été correctement saisi lors de cette exécution).
5 . Arrêter les pendules! Maintenant imprimer le CPM (par minute caracters) de référence, qui est calculé comme suit: (sum of the characters of the chosen words / time spent typing (seconds)) * 60
. Arrondissez à l'entier le plus proche et reproduisez la sortie (exemple) suivante:
-> Vous avez marqué 344 CPM!
Un échantillon
-> s'installer -> côté -> ouvert -> ministre -> risque -> couleur -> bateau -> pareil -> taille -> épée régler D'accord côté D'accord ouvert D'accord # ...................... quelques lignes coupées ...................... mot FAUX épée D'accord -> Vous avez marqué 298 CPM!
Le gagnant
C'est le code colf, l'entrée la plus courte (en nombre de caractères du code source) gagne, amusez-vous!
Réponses:
K, 146
Suppose un fichier de dictionnaire appelé «d» dans le répertoire de travail actuel.
la source
K
J'ai vu (ici sur codegolf.se) ...Bash -
217212199196 caractèresJe ne vais pas gagner mais c'était amusant
Moins de 200 caractères maintenant!
Prend le fichier de liste de mots comme argument Prendmaintenant la liste de mots sur l'entrée standard. Collez-le dans le terminal et appuyez sur ^ DSuggestion mise en œuvre à partir de manatwork
la source
$SECONDS
variable shell pour simplifier le calcul du temps écoulé.:
expansion du paramètre de valeur par défaut; 2) le$
devant deSECONDS
l'évaluation arithmétique. En fait, il y a un autre caractère supplémentaire, la nouvelle ligne au et du fichier.Ruby (
189178171168)Assez basique, je suis sûr qu'il y a des améliorations à apporter. Prend le nom de fichier du dictionnaire comme argument de ligne de commande.
EDIT : quelques ajustements mineurs, principalement autour de la conservation des nouvelles lignes du dictionnaire. Par conséquent, le fichier aura besoin d'une nouvelle ligne de fin pour fonctionner correctement.
la source
C, 305
309347caractèresMerci à @ugoren pour les conseils d'amélioration. L'utilisation d'un "11ème mot" pour éliminer les entrées de dictionnaire entrantes a été une grande victoire par rapport à mon approche précédente strcpy-si-choisie.
Voici la source non golfée:
la source
main(n,v)char**v;{...
. 2.stdin
peut l'êtrechar *
.fgets(buf,len,stdin)
=gets(buf)
(sans parler des dépassements de tampon). 3. Qu'est-ce qui ne va pasrand()%i
?RAND_MAX
n'est pas nécessaire. 4. Pourquoilong
?t=time(0)
->time(&t)
. 2)n*60/(time(0)-t)
a entre parenthèses qui doit aller -*60
peut être déplacé versn+=60*printf
, puisn/=time(0)-t
. 3) Remplacerb
par un élément supplémentaire dansw
, remplacerstrcpy
par lire directement dansw
.fgets()
pargets()
du code supplémentaire a besoin de gérer les sauts de ligne dans le dictionnaire; cette fin étant plus courte.rand()%i
n'est pas suffisant; le calcul réel est(double)i*rand()/RAND_MAX
. Déplacer le*60
vers le printf signifie également changer le-4
vers-240
pour qu'il finisse par perdre. Vos autres points sont valables, cependant (je crois). Oh, etlong
c'est parce que time_t est traditionnellement long. Ce n'est pas parce que nous jouons au golf que nous ne pouvons pas être portables.4
->240
... La portabilité et le golf ne vont pas bien ensemble. Mais la définitioni,t;
(implicitement int) est OK jusqu'àMAX_INT
quelques secondes (si vous n'utilisez pastime(&t)
). Avecrand()
, tout ce dont vous avez besoin est une10/i
chance, et lerand()%i<10
fait.rand()%10>10
, ce qui lui donne 100%.rand()%(i+1)>9
c'est mieux (mais à la place si c'est le%(i+1)
casi++>9?
.*stdin
C # 401
Version en cours d'exécution ici: http://ideone.com/Nt6Id
la source
Python (
256235)C'est en python 2.x, en 3.x je peux raser 4 caractères supplémentaires en utilisant la fonction d'impression.
Newlines inclus
la source
z=lambda x:
pourdef z(x):
.len(x)
et ildef z(x):return
y a 5 autres caractères: /input()
place desys.argv[1].read()
PHP 187 octets
Des nouvelles lignes ont été ajoutées pour plus de clarté:
Accepte le nom de fichier du dictionnaire comme argument de ligne de commande. Le fichier de dictionnaire doit se terminer par une nouvelle ligne.
la source
Scala (
319306304302)la source