Las normas
¡Es hora de construir una prueba de velocidad de mecanografía en el idioma que elija!
1 . Proporciona un archivo con un diccionario de elección (cada 'palabra' debe estar delimitada por una nueva línea). Conéctelo a través de stdino proporcione su nombre como argumento de línea de comando.
una poder acerca de encima ausencia ...
2 . Elija 10 palabras aleatorias del archivo (no se deben permitir duplicados) e imprímalas de la siguiente manera:
-> directo -> suelo -> siguiente -> cinco ...
3 . ¡Comience a medir el tiempo dedicado de ahora en adelante!
4 . Deje que el usuario escriba las diez palabras lo más rápido posible (finalizó con un retorno de carro). Imprima OKcuando tenga una coincidencia, imprima WRONGcuando tengamos un error de escritura (o la palabra ya se escribió correctamente en esta ejecución).
5 . ¡Detener los relojes! Ahora imprimir el CPM (Caracters por minuto) punto de referencia, que se calcula como sigue: (sum of the characters of the chosen words / time spent typing (seconds)) * 60. Redondee al entero más cercano y reproduzca la siguiente salida (muestra):
-> ¡Has obtenido 344 CPM!
Una muestra de ejecución
-> asentarse -> lado -> abierto -> ministro -> riesgo -> color -> barco -> mismo -> tamaño -> espada asentar Okay lado Okay abierto Okay # ...................... algunas líneas cortadas ...................... palabra INCORRECTO espada Okay -> ¡Has obtenido 298 CPM!
El ganador
Este es el código colf, la entrada más corta (en el recuento de caracteres del código fuente) gana, ¡diviértete!

Respuestas:
K, 146
Asume un archivo de diccionario llamado 'd' en el directorio de trabajo actual.
fuente
Kque he visto (aquí en codegolf.se) ...Bash -
217212199196 caracteresNo voy a ganar pero fue divertido
¡Menos de 200 caracteres ahora!
Toma el archivo de la lista de palabras como argumentoAhora toma la lista de palabras en la entrada estándar. Pégalo en la terminal y presiona ^ DSugerencia implementada de manatwork
fuente
$SECONDSvariable de shell para simplificar el cálculo del tiempo transcurrido.:expansión del parámetro del valor predeterminado; 2) el$frente deSECONDSla evaluación aritmética. En realidad, hay otro personaje adicional, la nueva línea en el archivo.Rubí
189178171168)Bastante básico, estoy seguro de que hay mejoras por hacer. Toma el nombre de archivo del diccionario como argumento de línea de comandos.
EDITAR : Algunos ajustes menores, principalmente para retener las nuevas líneas del diccionario. Como resultado, el archivo necesitará una nueva línea final para funcionar correctamente.
fuente
C, 305
309347caracteresGracias a @ugoren por las sugerencias de mejora. El uso de una "11ª palabra" para descartar las entradas de diccionario entrantes fue una gran victoria sobre mi enfoque anterior de strcpy-if-elegido.
Aquí está la fuente no protegida:
fuente
main(n,v)char**v;{.... 2.stdinpuede serchar *.fgets(buf,len,stdin)=gets(buf)(no importa los desbordamientos del búfer). 3. ¿Qué tiene de malorand()%i?RAND_MAXno es necesario 4. ¿Por quélong?t=time(0)->time(&t). 2)n*60/(time(0)-t)tiene paréntesis que deben ir,*60se puede mover an+=60*printf, entoncesn/=time(0)-t. 3) Reemplazarbcon un elemento extra adentrow, reemplazarstrcpycon leer directamente enw.fgets()congets()las necesidades de código adicional para hacer frente a las nuevas líneas en el diccionario; esto terminó siendo más corto.rand()%ino es suficiente El cálculo real es(double)i*rand()/RAND_MAX. Mover el*60a la printf también significa cambiar el-4a-240para que finalmente resulte una pérdida. Sin embargo, sus otros puntos son válidos (creo). Ah, ylonges porque el tiempo es tradicionalmente largo. El hecho de que estemos jugando al golf no significa que no podamos ser portátiles.4->240... La portabilidad y el golf no van bien juntos. Pero definiri,t;(implícitamente int) está bien hastaMAX_INTsegundos (si no lo usatime(&t)). Conrand()todo lo que necesitas es una10/ioportunidad, y lorand()%i<10hace.rand()%10>10, lo que le da el 100%.rand()%(i+1)>9es mejor (pero en cambio si%(i+1)hacerloi++>9?. También moverse*stdinser el primero y ahorra espacio.C # 401
Versión en ejecución aquí: http://ideone.com/Nt6Id
fuente
Python (
256235)Esto está en python 2.x, en 3.x puedo eliminar 4 caracteres más usando la función de impresión.
Nuevas líneas incluidas
fuente
z=lambda x:adef z(x):.len(x)ydef z(x):returnson 5 personajes más: /input()lugar desys.argv[1].read()PHP 187 bytes
Se han agregado nuevas líneas para mayor claridad:
Acepta el nombre de archivo del diccionario como argumento de línea de comando. El archivo del diccionario debe terminar con una nueva línea.
fuente
Scala (
319306304302)fuente