Kolejna rewolucja w pisaniu na laptopach została wydana pierwszego kwietnia 2014 roku przez SwiftKey . Chcę jednak być pierwszą osobą, która napisała przesuwającego się nano-klona, ale ponieważ nie mogę znaleźć dobrego tekstu przesuwanego do biblioteki tekstu rzeczywistego i nie mogę się doczekać, pytam tutaj.
Zadanie
Napisz program, który pobiera tekst machnięcia i generuje odpowiednik tekstu rzeczywistego. Przykład:
Input: hgrerhjklo
Output: hello
Gdy użytkownik:
Inne przykłady:
Input: wertyuioiuytrtjklkjhgfd
Output: world
Input: poiuytrtyuioiugrewsasdfgbhnmkijnbg
Output: programming
Input: poiuygfdzxcvhjklkjhgres
Output: puzzles
Input: cvhjioiugfde
Output: code
Input: ghiolkjhgf
Output: golf
Zasady
- Program pobierze jedno przeciągnięte „słowo” na stdin lub argv
- Pierwsza i ostatnia litera wprowadzonego tekstu będzie równa pierwszej i ostatniej literze prawdziwego słowa
- Możesz założyć, że użytkownik wykona rozsądnie proste linie, ale możesz użyć przykładowych danych, aby to zweryfikować (stworzyłem przykładowe dane i zrobię końcowe dane testowe)
- W przypadku niejednoznacznych danych wejściowych możesz wybrać jedno z danych wyjściowych, ale spróbuję usunąć wszelkie niejednoznaczności z danych testowych
- To słowo będzie w tym liście słów (ale przeciągnął). Lista słów będzie w bieżącym katalogu i będzie można ją odczytać (oddzielony nowy wiersz, zostanie nazwany
wordlist
, bez rozszerzenia). - Przeciągnięcie będzie zawierać tylko małe litery
- Przesunięcie może zawierać zduplikowane znaki, jeśli użytkownik pauzuje na klawiszu
- Program musi wyprowadzać na standardowe wyjście (wielkość liter nie ma znaczenia)
- Program musi zostać zwrócony
0
jako kod powrotu - Musisz podać polecenie uruchomienia, polecenie kompilacji (w razie potrzeby), nazwę i ścieżkę wejściową do użycia
- Obowiązują standardowe luki (mogą jednak nie pomóc)
- Niedozwolone są wbudowane biblioteki
- Preferowane są deterministyczne, nie golfowe / zaciemnione rozwiązania
- Bez pisania plików, pracy w sieci itp.
- Twój kod musi działać w ciągu jednej sekundy lub krócej (kod jest uruchamiany raz na słowo)
- Przebiegi oceniania są uruchamiane na procesorze Intel i7 Haswell z 4 wirtualnymi kodami (2 prawdziwe), więc możesz użyć wątków, jeśli musisz
- Maksymalna długość kodu 5000 bajtów
- Język, którego używasz, musi mieć bezpłatną (próbną) wersję dla Linuksa (Arch Linux, jeśli to ma znaczenie)
Zwycięskie kryterium
- Zwycięzca jest najdokładniejszym rozwiązaniem (ocenionym przez program kontroli , na podstawie dostarczonej listy testów)
- Popularność jest czynnikiem rozstrzygającym
- Tabela punktacji będzie aktualizowana co kilka dni
- Przerwy i awarie liczą się jako niepowodzenia
- To wyzwanie potrwa dwa tygodnie lub dłużej, w zależności od popularności
- W końcowej punktacji zostanie użyta inna, losowo wybrana lista słów (ta sama długość, z tej samej listy słów)
Inny
- Możesz użyć programu sterującego do przetestowania swojego programu
- Jeśli jesteś niecierpliwy i chcesz, aby Twój program był szybko aktualizowany / dodawany, rozpocznij problem lub ściągnij żądanie na https://github.com/matsjoyce/codegolf-swipe-type/blob/master
- Wpisy są utrzymywane na https://github.com/matsjoyce/codegolf-swipe-type/blob/master/entries
- Dzienniki każdego uruchomienia programu są przechowywane na stronie https://github.com/matsjoyce/codegolf-swipe-type/blob/master/logs
- Główny dziennik na https://github.com/matsjoyce/codegolf-swipe-type/blob/master/log.log
- Pozycja każdego klucza zostanie podana jako plik csv w bieżącym katalogu o nazwie
keypos.csv
, z wartościami x i y podanymi w stosunku doQ
(patrz https://github.com/matsjoyce/codegolf-swipe-type/blob/master/ keypos.csv ) - Każdy klucz ma wymiary 1,5 x 1,5 cm (ta sama jednostka, co w keypos.csv)
Aktualne tablice wyników
lista testów ( logi ):
Three Pass Optimizer:Errors: 0/250 Fails: 7/250 Passes: 243/250 Timeouts: 0/250
Corner Sim: Errors: 0/250 Fails: 9/250 Passes: 241/250 Timeouts: 0/250
Discrete Fréchet Distance:Errors: 0/250 Fails: 17/250 Passes: 233/250 Timeouts: 0/250
Turnaround: Errors: 0/250 Fails: 18/250 Passes: 232/250 Timeouts: 0/250
Direction Checker: Errors: 0/250 Fails: 19/250 Passes: 231/250 Timeouts: 0/250
Regex Solver: Errors: 0/250 Fails: 63/250 Passes: 187/250 Timeouts: 0/250
Corner Sim: Errors: 0/250 Fails: 10/250 Passes: 240/250 Timeouts: 0/250
Three Pass Optimizer:Errors: 2/250 Fails: 14/250 Passes: 234/250 Timeouts: 0/250
Turnaround: Errors: 0/250 Fails: 16/250 Passes: 234/250 Timeouts: 0/250
Direction Checker: Errors: 0/250 Fails: 17/250 Passes: 233/250 Timeouts: 0/250
Discrete Fréchet Distance:Errors: 0/250 Fails: 18/250 Passes: 232/250 Timeouts: 0/250
Regex Solver: Errors: 0/250 Fails: 67/250 Passes: 183/250 Timeouts: 0/250
Final Run
lista testów ( logi ):
Corner Sim: Errors: 0/250 Fails: 14/250 Passes: 236/250 Timeouts: 0/250
Three Pass Optimizer:Errors: 0/250 Fails: 18/250 Passes: 232/250 Timeouts: 0/250
Direction Checker: Errors: 0/250 Fails: 20/250 Passes: 230/250 Timeouts: 0/250
Turnaround: Errors: 0/250 Fails: 23/250 Passes: 227/250 Timeouts: 0/250
Discrete Fréchet Distance:Errors: 0/250 Fails: 30/250 Passes: 220/250 Timeouts: 0/250
Regex Solver: Errors: 0/250 Fails: 55/250 Passes: 195/250 Timeouts: 0/250
Dobra robota dla wszystkich i hgfdsasdertyuiopoiuy swertyuiopoijnhg!
l