La prochaine révolution dans la dactylographie sur les ordinateurs portables a été lancée le 1er avril 2014 par SwiftKey . Cependant, je veux être la première personne à écrire un nano clone de balayage, mais, comme je ne trouve pas un bon texte de balayage vers une bibliothèque de texte réel, et je ne peux pas attendre pour eux, je demande ici.
Tâche
Écrivez un programme qui accepte le texte glissé et génère l'équivalent en texte réel. Exemple:
Input: hgrerhjklo
Output: hello
Lorsque l'utilisateur:
Autres exemples:
Input: wertyuioiuytrtjklkjhgfd
Output: world
Input: poiuytrtyuioiugrewsasdfgbhnmkijnbg
Output: programming
Input: poiuygfdzxcvhjklkjhgres
Output: puzzles
Input: cvhjioiugfde
Output: code
Input: ghiolkjhgf
Output: golf
Règles
- Le programme prendra un «mot» glissé sur stdin ou argv
- La première et la dernière lettre de l'entrée balayée correspondront à la première et à la dernière lettre du mot réel
- Vous pouvez supposer que l'utilisateur fera des lignes raisonnablement droites, mais vous pouvez utiliser les données d'exemple pour le vérifier (j'ai créé les données d'exemple et je ferai les données de test finales)
- Pour une entrée ambiguë, vous pouvez faire sélectionner l'une ou l'autre sortie, mais j'essaierai d'éliminer toute ambiguïté des données de test
- Ce mot sera dans cette liste de mots (mais glissé). La liste de mots sera dans le répertoire courant, et peut être lue (nouvelle ligne séparée, sera nommée
wordlist
, sans extension). - Le balayage ne contiendra que des caractères alphabétiques en minuscules
- Le balayage peut contenir des caractères en double, si l'utilisateur marque une pause sur une touche
- Le programme doit sortir sur stdout (le cas n'a pas d'importance)
- Le programme doit retourner
0
comme code retour - Vous devez fournir la commande d'exécution, la commande de compilation (si nécessaire), le nom et le chemin d'entrée à utiliser
- Des failles standard s'appliquent (cependant, elles pourraient ne pas aider)
- Aucune bibliothèque non intégrée autorisée
- Solutions déterministes, non golfées / obscurcies préférées
- Pas d'écriture de fichiers, de mise en réseau, etc.
- Votre code doit être exécuté en une seconde ou moins (votre code est exécuté une fois par mot)
- Les scores sont exécutés sur un processeur Intel i7 Haswell, avec 4 codes virtuels (2 réels), vous pouvez donc utiliser des threads si vous devez
- Longueur maximale du code de 5000 octets
- La langue que vous utilisez doit avoir une version gratuite (non d'essai) disponible pour Linux (Arch Linux, si cela est important)
Critère gagnant
- Le gagnant est la solution la plus précise (notée par le programme de contrôle , en utilisant la liste de tests fournie)
- La popularité est le bris d'égalité
- Le tableau des scores sera mis à jour tous les quelques jours
- Les temps morts et les accidents comptent comme des échecs
- Ce défi durera deux semaines ou plus, selon la popularité
- La notation finale utilisera une liste de mots différente, choisie au hasard (même longueur, à partir de la même liste de mots)
Autre
- Vous pouvez utiliser le programme de contrôle pour tester votre programme
- Si vous êtes impatient et souhaitez que votre programme soit mis à jour / ajouté rapidement, lancez un problème ou envoyez une demande à https://github.com/matsjoyce/codegolf-swipe-type/blob/master
- Les inscriptions sont conservées sur https://github.com/matsjoyce/codegolf-swipe-type/blob/master/entries
- Les journaux de chaque exécution de programme sont conservés sur https://github.com/matsjoyce/codegolf-swipe-type/blob/master/logs
- Journal principal sur https://github.com/matsjoyce/codegolf-swipe-type/blob/master/log.log
- La position de chaque clé sera fournie sous forme de fichier csv dans le répertoire courant appelé
keypos.csv
, avec les valeurs x et y données par rapport àQ
(voir https://github.com/matsjoyce/codegolf-swipe-type/blob/master/ keypos.csv ) - Chaque clé mesure 1,5 x 1,5 cm (même unité que dans keypos.csv)
Tableaux de score actuels
liste de tests ( journaux ):
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
Course finale
liste de tests ( journaux ):
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
Bravo à tout le monde et hgfdsasdertyuiopoiuy swertyuiopoijnhg!
l
, qui n'est pas doublé.