Die nächste Revolution beim Tippen auf Laptops wurde am 1. April 2014 von SwiftKey veröffentlicht . Ich möchte jedoch die erste Person sein, die einen Swiping-Nano-Klon schreibt, aber da ich keinen guten Swipe-Text für eine echte Textbibliothek finde und nicht auf sie warten kann, frage ich hier.
Aufgabe
Schreiben Sie ein Programm, das Swipe-Text aufnimmt und das echte Textäquivalent ausgibt. Beispiel:
Input: hgrerhjklo
Output: hello
Wenn der Benutzer Folgendes tut:
Andere Beispiele:
Input: wertyuioiuytrtjklkjhgfd
Output: world
Input: poiuytrtyuioiugrewsasdfgbhnmkijnbg
Output: programming
Input: poiuygfdzxcvhjklkjhgres
Output: puzzles
Input: cvhjioiugfde
Output: code
Input: ghiolkjhgf
Output: golf
Regeln
- Das Programm nimmt ein 'Wort' auf stdin oder argv
- Der erste und letzte Buchstabe der durchgestrichenen Eingabe entspricht dem ersten und letzten Buchstaben des tatsächlichen Wortes
- Sie können davon ausgehen, dass der Benutzer einigermaßen gerade Linien macht, aber Sie können die Beispieldaten verwenden, um dies zu überprüfen (ich habe die Beispieldaten gemacht und ich werde die endgültigen Testdaten machen).
- Bei mehrdeutigen Eingaben können Sie eine der beiden Ausgaben auswählen, aber ich werde versuchen, alle Mehrdeutigkeiten in den Testdaten zu beseitigen
- Dieses Wort wird in dieser Wortliste angezeigt (aber durchgestrichen). Die Wortliste befindet sich im aktuellen Verzeichnis und kann gelesen werden (durch Zeilenumbrüche getrennt, wird benannt
wordlist
, keine Erweiterung). - Das Wischen enthält nur Kleinbuchstaben
- Das Wischen kann doppelte Zeichen enthalten, wenn der Benutzer bei einem Schlüssel pausiert
- Das Programm muss auf stdout ausgegeben werden (Groß- / Kleinschreibung spielt keine Rolle)
- Das Programm muss
0
als Rückkehrcode zurückgeben - Sie müssen den Befehl run, den Befehl compile (falls erforderlich), den Namen und den zu verwendenden Eingabepfad angeben
- Es gelten Standardlücken (sie können jedoch nicht helfen)
- Keine nicht eingebauten Bibliotheken erlaubt
- Deterministische, nicht golfende / verschleierte Lösungen bevorzugt
- Kein Schreiben von Dateien, Vernetzung usw.
- Ihr Code muss in einer Sekunde oder weniger ausgeführt werden (Ihr Code wird einmal pro Wort ausgeführt)
- Die Scoring-Läufe werden auf einem Intel i7 Haswell-Prozessor mit 4 virtuellen Codes (2 realen) ausgeführt, sodass Sie bei Bedarf Threads verwenden können
- Maximale Codelänge von 5000 Bytes
- Für die von Ihnen verwendete Sprache muss eine kostenlose (keine Test-) Version für Linux verfügbar sein (Arch Linux, falls dies von Bedeutung ist)
Gewinnkriterium
- Der Gewinner ist die genaueste Lösung (vom Kontrollprogramm anhand der bereitgestellten Testliste bewertet)
- Popularität ist der Krawattenbrecher
- Die Wertungstabelle wird alle paar Tage aktualisiert
- Auszeiten und Abstürze gelten als fehlgeschlagen
- Diese Herausforderung dauert je nach Beliebtheit zwei Wochen oder länger
- Die endgültige Wertung verwendet eine andere, zufällig ausgewählte Liste von Wörtern (gleiche Länge, aus derselben Wortliste).
Andere
- Mit dem Steuerungsprogramm können Sie Ihr Programm testen
- Wenn Sie ungeduldig sind und möchten, dass Ihr Programm schnell aktualisiert / hinzugefügt wird, starten Sie ein Problem oder fordern Sie es unter https://github.com/matsjoyce/codegolf-swipe-type/blob/master an
- Einträge werden unter https://github.com/matsjoyce/codegolf-swipe-type/blob/master/entries gepflegt
- Die Protokolle der einzelnen Programmläufe werden unter https://github.com/matsjoyce/codegolf-swipe-type/blob/master/logs gespeichert
- Hauptprotokoll unter https://github.com/matsjoyce/codegolf-swipe-type/blob/master/log.log
- Die Position jedes Schlüssels wird als CSV-Datei im aktuellen Verzeichnis angegeben.
keypos.csv
Die X- und Y-Werte beziehen sich aufQ
(siehe https://github.com/matsjoyce/codegolf-swipe-type/blob/master/). keypos.csv ) - Jeder Schlüssel misst 1,5 x 1,5 cm (dieselbe Einheit wie in keypos.csv)
Aktuelle Anzeigetafeln
Testliste ( Protokolle ):
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
Testliste2 ( Protokolle ):
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
Testliste ( Protokolle ):
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
Gut gemacht an alle und hgfdsasdertyuiopoiuy swertyuiopoijnhg!
l
, das ist nicht verdoppelt.