Einführung
Ich kann mit dem QWERTZ-Tastaturlayout in mäßigem Tempo tippen. Aber wenn ein Wort wie Yellowwooddoor eine Menge wiederholter Buchstaben enthält, dauert die Eingabe etwas länger. Noch schlimmer ist es, wenn ein Wort wie "Sprung" denselben Finger hat, der für mehrere verschiedene aufeinanderfolgende Buchstaben verwendet wird.
So lange brauche ich, um Buchstaben an jedem Finger einzugeben (sehr unwissenschaftlich gemessen):
Spalten sind Fingername, Tastenanschläge / Sekunde, Sekunden / Tastenanschlag und die von jedem Finger verwendeten Tasten
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
Gleiche Daten im CSV-Format .
Es braucht
.75 * (first_finger_same_letter_time + second_finger_same_letter_time) / 2
Zeit zwischen zwei Fingern zu wechseln.
Herausforderung
Wie lange dauert die Eingabe einer Zeichenfolge als Eingabe?
- Der "Timer" startet in dem Moment, in dem die erste Taste gedrückt wird, und endet, wenn die letzte Taste gedrückt wird. Sie zählen nur die Zeit zwischen den Tastendrücken.
- Das ist Code-Golf . Die kürzeste Antwort in Bytes gewinnt.
- Die Einreichung kann entweder ein vollständiges Programm oder eine Funktion sein.
- Eingang und Ausgang jeder wie Sie es wünschen , stdin / out, Funktion params, Datei, spielt keine Rolle.
- Die Ausgabe sollte auf mindestens 3 Dezimalstellen genau sein (+/- 0,001 für Rundungsfehler sind in Ordnung). Führende 0. für Zahlen unter 1 und nachfolgende Zeilenumbrüche optional.
- Die Eingabe ist eine Zeichenfolge, die (Kleinbuchstaben) az, 0-9, Leerzeichen, Semikolon, Komma, Punkt und Apostroph enthält.
- Ich tippe Leerzeichen immer mit meinem rechten Daumen.
- Ich verwende die normalen Touch-Tippfinger (Sie können auch in der obigen Tabelle nach Fingertastenzuordnungen suchen).
- Referenzcode zum Generieren von Testfällen
Testfälle
(leere Zeichenfolge oder eine beliebige Zeichenfolge) - 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
wenn die Eingabe leer oder ein einzelnes Zeichen ist?Antworten:
JavaScript (Node.js) , 180 Byte
Probieren Sie es online aus!
Wie?
Verzögerungen speichern
'4.2.5-75E6?3>4=4AA'
chr(52)
'4'
Konvertieren eines Zeichens in ein Schlüsselfach
Hauptschleife
Die Gesamtzeit wird aktualisiert mit:t
Dabei ist das vorherige Bin und das vorherige Zeichen.p s
quelle
Gelee , 78 Bytes
Probieren Sie es online aus!
Wie?
quelle
05AB1E ,
9286 BytesProbieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
Sehen Sie diese 05AB1E Spitze von mir (Abschnitte Wie große natürliche Zahlen zu komprimieren? Und Wie zu komprimieren integer Listen? ) Zu verstehen , warum
•δ'ā∍ë*8U¾Ã•
ist307264255556527588774514
und•δ'ā∍ë*8U¾Ã•₂в
ist[7,1,5,1,8,0,10,8,24,9,18,6,17,7,16,7,20]
.quelle