Wprowadzenie
Mogę pisać w umiarkowanym tempie, korzystając z układu klawiatury QWERTY. Ale jeśli słowo takie jak yellowwooddoor ma mnóstwo powtarzających się liter, jego wpisanie zajmuje trochę więcej czasu. Jeszcze gorzej jest, gdy słowo takie jak „skok” ma ten sam palec używany do wielu różnych kolejnych liter.
Oto, jak długo zajmuje mi pisanie liter na każdym palcu (bardzo nienaukowy sposób):
Kolumny to Nazwa palca, naciśnięcia klawiszy / sekundy, sekundy / naciśnięcie klawisza oraz klawisze używane przez każdy palec
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
Te same dane w formacie CSV .
To zajmuje
.75 * (first_finger_same_letter_time + second_finger_same_letter_time) / 2
czas na przełączanie między dwoma palcami.
Wyzwanie
Biorąc pod uwagę ciąg jako dane wejściowe, ile czasu zajmuje jego wpisanie?
- „Timer” rozpoczyna się w momencie naciśnięcia pierwszego klawisza, a kończy po naciśnięciu ostatniego klawisza. Po prostu odliczasz czas między naciśnięciami klawiszy.
- To jest golf golfowy . Najkrótsza odpowiedź w bajtach wygrywa.
- Zgłoszenie może być kompletnym programem lub funkcją.
- Wejścia i wyjścia w dowolny sposób , standardowe wejście / wyjście, parametry funkcji, plik, nie ma znaczenia.
- Dane wyjściowe powinny być dokładne z dokładnością do co najmniej 3 miejsc po przecinku (+/- 0,001 dla błędu zaokrąglania jest w porządku). Wiodące 0. dla liczb poniżej 1 i opcjonalny nowy znak nowej linii.
- Dane wejściowe będą ciągiem zawierającym (małe litery) az, 0-9, spację, średnik, przecinek, kropkę i apostrof.
- Zawsze piszę spacje prawym kciukiem.
- Używam normalnych palców do pisania dotykowego (możesz również spojrzeć na powyższą tabelę, aby uzyskać mapowanie klawiszy).
- Kod referencyjny używany do generowania przypadków testowych
Przypadki testowe
(pusty ciąg lub dowolny ciąg jednoznakowy) - 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
jeśli dane wejściowe są puste lub pojedynczy znak?Odpowiedzi:
JavaScript (Node.js) , 180 bajtów
Wypróbuj online!
W jaki sposób?
Przechowywanie opóźnień
'4.2.5-75E6?3>4=4AA'
chr(52)
'4'
Przekształcanie znaku w pojemnik na klucze
Główna pętla
źródło
Galaretka , 78 bajtów
Wypróbuj online!
W jaki sposób?
źródło
05AB1E ,
9286 bajtówWypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
Zobacz moją wskazówkę 05AB1E (sekcje Jak kompresować duże liczby całkowite? I Jak kompresować listy liczb całkowitych? ), Aby zrozumieć, dlaczego
•δ'ā∍ë*8U¾Ã•
jest307264255556527588774514
i•δ'ā∍ë*8U¾Ã•₂в
jest[7,1,5,1,8,0,10,8,24,9,18,6,17,7,16,7,20]
.źródło