Introducción
Puedo escribir a un ritmo moderado, usando la distribución del teclado QWERTY. Pero si una palabra como yellowwooddoor tiene un montón de letras repetidas, toma un poco más de tiempo escribirla. Peor aún es cuando una palabra como "saltar" tiene el mismo dedo utilizado para varias letras consecutivas diferentes.
Este es el tiempo que me toma escribir letras en cada dedo (medido muy poco científicamente):
Las columnas son Nombre del dedo, pulsaciones de tecla / segundo, segundos / pulsación de tecla y las teclas utilizadas por cada dedo
Typing same letter twice:
L Pinky 5.2 0.1923076923 1qaz
L Ring 5 0.2 2wsx
L Mid 5.3 0.1886792453 3edc
L Index 5.5 0.1818181818 4rfv5tgb
R Thumb 6.5 0.1538461538 [space]
R Index 6.9 0.1449275362 6yhn7ujm
R Mid 6.3 0.1587301587 8ik,
R Ring 6.2 0.1612903226 9ol.
R Pinky 6.1 0.1639344262 0p;'
Typing different letter on same finger:
L Pinky 4.6 0.2173913043
L Ring 4.6 0.2173913043
L Mid 4.5 0.2222222222
L Index 5.3 0.1886792453
R Index 5.4 0.1851851852
R Mid 5.1 0.1960784314
R Ring 5.2 0.1923076923
R Pinky 5.2 0.1923076923
Mismos datos en formato CSV .
Se necesita
.75 * (first_finger_same_letter_time + second_finger_same_letter_time) / 2
hora de cambiar entre dos dedos.
Desafío
Dada una cadena como entrada, ¿cuánto tiempo lleva escribirla?
- El "temporizador" comienza en el momento en que se presiona la primera tecla y finaliza cuando se presiona la última tecla. Solo está contando el tiempo entre pulsaciones de teclas.
- Este es el código de golf . La respuesta más corta en bytes gana.
- La presentación puede ser un programa completo o una función.
- La entrada y salida de la forma que desee , stdin / out, parámetros de función, archivo, no importa.
- La salida debe tener una precisión de al menos 3 decimales (+/- 0.001 para el error de redondeo está bien). 0. a la izquierda para números menores a 1 y línea posterior opcional.
- La entrada será una cadena que contiene (minúsculas) az, 0-9, espacio, punto y coma, coma, punto y apóstrofe.
- Siempre escribo espacios con mi pulgar derecho.
- Utilizo los dedos de escritura táctil normales (también puede consultar la tabla anterior para ver las asignaciones de teclas con los dedos).
- Código de referencia utilizado para generar casos de prueba
Casos de prueba
(cadena vacía o cualquier cadena de un carácter) - 0.000
aa
- 0.192
fff
- 0.364
fj
- 0.123
the quick brown fox jumped over the lazy dog
- 5.795
yellowwooddoor
- 1.983
orangewooddoor
- 1.841
jump on it, jump on it
- 2.748
type on it, type on it
- 2.549
abcdefghijklmnopqrstuvwxyz01234567890 ;,.'
- 5.746
ok, this may not be the most accurate but it's in the ballpark, maybe within 30 percent or so.
- 12.138
0
si la entrada está vacía o tiene un solo carácter?Respuestas:
JavaScript (Node.js) , 180 bytes
Pruébalo en línea!
¿Cómo?
Almacenar retrasos
'4.2.5-75E6?3>4=4AA'
chr(52)
'4'
Convertir un personaje en un contenedor de claves
Bucle principal
El tiempo total se actualiza con:t
donde es la papelera anterior, y que es el carácter anterior.pag s
fuente
Gelatina , 78 bytes
Pruébalo en línea!
¿Cómo?
fuente
05AB1E ,
9286 bytesPruébelo en línea o verifique todos los casos de prueba .
Explicación:
Vea esta sugerencia mía 05AB1E (secciones ¿Cómo comprimir enteros grandes? Y ¿Cómo comprimir listas enteras? ) Para comprender por qué
•δ'ā∍ë*8U¾Ã•
es307264255556527588774514
y•δ'ā∍ë*8U¾Ã•₂в
es[7,1,5,1,8,0,10,8,24,9,18,6,17,7,16,7,20]
.fuente