Introdução
Posso digitar em ritmo moderado, usando o layout do teclado QWERTY. Mas se uma palavra como yellowwooddoor tem uma tonelada de letras repetidas, demora um pouco mais para digitá-la. Pior ainda é quando uma palavra como "pular" tem o mesmo dedo usado para várias letras consecutivas diferentes.
Aqui está quanto tempo leva para eu digitar letras em cada dedo (medido de maneira não científica):
As colunas são nome do dedo, pressionamentos de tecla / segundo, segundos / pressionamento de tecla e as teclas usadas 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
Mesmos dados no formato CSV .
Leva
.75 * (first_finger_same_letter_time + second_finger_same_letter_time) / 2
hora de alternar entre dois dedos.
Desafio
Dada uma string como entrada, quanto tempo leva para digitá-la?
- O "timer" inicia no momento em que a primeira tecla é pressionada e termina quando a última tecla é pressionada. Você está apenas contando o tempo entre as teclas pressionadas.
- Isso é código-golfe . A resposta mais curta em bytes vence.
- O envio pode ser um programa ou função completo.
- Entrada e saída como você quiser , stdin / out, parâmetros de função, arquivo, não importa.
- A saída deve ser precisa com pelo menos três casas decimais (+/- 0,001 para erro de arredondamento é bom). À esquerda 0. para números abaixo de 1 e à nova linha final opcional.
- A entrada será uma sequência que contém (minúsculas) az, 0-9, espaço, ponto e vírgula, vírgula, ponto e apóstrofo.
- Eu sempre digito espaços com o polegar direito.
- Uso os dedos normais para digitação por toque (você também pode ver na tabela acima os mapeamentos das teclas dos dedos).
- Código de referência usado para gerar casos de teste
Casos de teste
(sequência vazia ou qualquer sequência de um caractere) - 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
se a entrada estiver vazia ou em um único caractere?Respostas:
JavaScript (Node.js) , 180 bytes
Experimente online!
Como?
Atrasos no armazenamento
'4.2.5-75E6?3>4=4AA'
chr(52)
'4'
Convertendo um caractere em um compartimento de chaves
Laço principal
fonte
Geléia , 78 bytes
Experimente online!
Como?
fonte
05AB1E ,
9286 bytesExperimente online ou verifique todos os casos de teste .
Explicação:
Consulte esta dica 05AB1E (seções Como compactar números inteiros grandes? E Como compactar listas de números inteiros? ) Para entender por que
•δ'ā∍ë*8U¾Ã•
é307264255556527588774514
e•δ'ā∍ë*8U¾Ã•₂в
é[7,1,5,1,8,0,10,8,24,9,18,6,17,7,16,7,20]
.fonte