La prossima rivoluzione nella digitazione su laptop è stata lanciata il primo aprile 2014 da SwiftKey . Tuttavia, voglio essere la prima persona a scrivere un nano clone, ma, poiché non riesco a trovare un buon testo scorrevole nella libreria di testi reali e non posso aspettarli, chiedo qui.
Compito
Scrivi un programma che includa il testo scorrevole e produca l'equivalente del testo reale. Esempio:
Input: hgrerhjklo
Output: hello
Quando l'utente fa:
Altri esempi:
Input: wertyuioiuytrtjklkjhgfd
Output: world
Input: poiuytrtyuioiugrewsasdfgbhnmkijnbg
Output: programming
Input: poiuygfdzxcvhjklkjhgres
Output: puzzles
Input: cvhjioiugfde
Output: code
Input: ghiolkjhgf
Output: golf
Regole
- Il programma prenderà una 'parola' trascinata dentro su stdin o argv
- La prima e l'ultima lettera dell'ingresso trascinato corrisponderanno alla prima e all'ultima lettera della parola reale
- Puoi presumere che l'utente realizzerà linee ragionevolmente dritte, ma puoi utilizzare i dati di esempio per verificarlo (ho creato i dati di esempio e realizzerò i dati di prova finali)
- Per input ambigui, è possibile selezionare uno dei due output, ma proverò a sradicare tutte le ambiguità dai dati di test
- Questa parola sarà in questo elenco di parole (ma trascinato). L'elenco di parole sarà nella directory corrente e può essere letto (separato da una nuova riga, verrà chiamato
wordlist
, senza estensione). - Il colpo conterrà solo caratteri alfabetici minuscoli
- Il colpo può contenere caratteri duplicati, se l'utente fa una pausa su un tasto
- Il programma deve essere emesso su stdout (il caso non ha importanza)
- Il programma deve restituire
0
come codice di ritorno - È necessario fornire il comando di esecuzione, il comando di compilazione (se necessario), il nome e il percorso di input da utilizzare
- Si applicano scappatoie standard (potrebbero non essere d'aiuto, però)
- Non sono consentite librerie non integrate
- Preferibili soluzioni deterministiche, non golfate / offuscate
- Nessuna scrittura di file, rete, ecc.
- Il codice deve essere eseguito in un secondo o meno (il codice viene eseguito una volta per parola)
- Le esecuzioni di punteggio vengono eseguite su un processore Intel i7 Haswell, con 4 codici virtuali (2 reali), quindi puoi usare i thread se devi
- Lunghezza massima del codice di 5000 byte
- La lingua che usi deve avere una versione gratuita (non di prova) disponibile per Linux (Arch Linux, se questo è importante)
Criterio vincente
- Il vincitore è la soluzione più accurata (segnata dal programma di controllo , utilizzando l'elenco di test fornito)
- La popolarità è il pareggio
- La tabella dei punteggi verrà aggiornata ogni pochi giorni
- I timeout e gli arresti anomali contano come falliti
- Questa sfida durerà due settimane o più, a seconda della popolarità
- Il punteggio finale utilizzerà un elenco di parole diverso, selezionato casualmente (stessa lunghezza, dallo stesso elenco di parole)
Altro
- È possibile utilizzare il programma di controllo per testare il programma
- Se sei impaziente e desideri che il tuo programma sia aggiornato / aggiunto rapidamente, avvia un problema o tira una richiesta su https://github.com/matsjoyce/codegolf-swipe-type/blob/master
- Le iscrizioni sono mantenute su https://github.com/matsjoyce/codegolf-swipe-type/blob/master/entries
- I registri di ciascun programma eseguito sono disponibili su https://github.com/matsjoyce/codegolf-swipe-type/blob/master/logs
- Registro principale su https://github.com/matsjoyce/codegolf-swipe-type/blob/master/log.log
- La posizione di ciascuna chiave verrà fornita come file csv nella directory corrente chiamata
keypos.csv
, con i valori xey indicati come relativi aQ
(vedi https://github.com/matsjoyce/codegolf-swipe-type/blob/master/ keypos.csv ) - Ogni tasto misura 1,5 x 1,5 cm (stessa unità di keypos.csv)
Tabelle dei punteggi attuali
lista di test ( registri ):
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
Corsa finale
lista di test ( registri ):
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
Complimenti a tutti e hgfdsasdertyuiopoiuy swertyuiopoijnhg!
l
, che non è raddoppiato.