La próxima revolución en escribir en computadoras portátiles fue lanzada el 1 de abril de 2014 por SwiftKey . Sin embargo, quiero ser la primera persona en escribir un nano clon deslizante, pero, como no puedo encontrar una buena biblioteca de texto deslizable a texto real, y no puedo esperar, les pregunto aquí.
Tarea
Escriba un programa que tome texto deslizante y genere el equivalente de texto real. Ejemplo:
Input: hgrerhjklo
Output: hello
Cuando el usuario hace:
Otros ejemplos:
Input: wertyuioiuytrtjklkjhgfd
Output: world
Input: poiuytrtyuioiugrewsasdfgbhnmkijnbg
Output: programming
Input: poiuygfdzxcvhjklkjhgres
Output: puzzles
Input: cvhjioiugfde
Output: code
Input: ghiolkjhgf
Output: golf
Reglas
- El programa tomará una 'palabra' deslizada en stdin o argv
- La primera y última letra de la entrada deslizada será igual a la primera y última letra de la palabra real
- Puede suponer que el usuario formará líneas rectas razonables, pero puede usar los datos de la muestra para verificar esto (hice los datos de la muestra y haré los datos finales de la prueba)
- Para entradas ambiguas, puede seleccionar seleccionar cualquiera de las salidas, pero intentaré erradicar toda ambigüedad de los datos de prueba
- Esta palabra estará en esta lista de palabras (pero deslizada). La lista de palabras estará en el directorio actual y puede leerse (nueva línea separada, se nombrará
wordlist
, sin extensión). - El deslizamiento solo contendrá caracteres alfabéticos en minúsculas
- El deslizamiento puede contener caracteres duplicados, si el usuario hace una pausa en una tecla
- El programa debe salir en stdout (el caso no importa)
- El programa debe regresar
0
como el código de retorno - Debe proporcionar el comando de ejecución, el comando de compilación (si es necesario), el nombre y qué ruta de entrada usar
- Se aplican las lagunas estándar (aunque podrían no ayudar)
- No se permiten bibliotecas no integradas
- Se prefieren soluciones deterministas, no golfizadas / ofuscadas
- Sin escritura de archivos, redes, etc.
- Su código debe ejecutarse en un segundo o menos (su código se ejecuta una vez por palabra)
- Las ejecuciones de puntuación se ejecutan en un procesador Intel i7 Haswell, con 4 códigos virtuales (2 reales), por lo que puede usar hilos si tiene que
- Longitud máxima de código de 5000 bytes
- El idioma que use debe tener una versión gratuita (no de prueba) disponible para Linux (Arch Linux, si eso es importante)
Criterio ganador
- El ganador es la solución más precisa (puntuada por el programa de control , utilizando la lista de pruebas proporcionada)
- La popularidad es el factor decisivo
- La tabla de puntuación se actualizará cada pocos días.
- Los tiempos de espera y los accidentes cuentan como fallidos
- Este desafío durará dos semanas o más, dependiendo de la popularidad.
- La puntuación final usará una lista de palabras diferente, seleccionada al azar (misma longitud, de la misma lista de palabras)
Otro
- Puede usar el programa de control para probar su programa
- Si eres impaciente y quieres que tu programa se actualice / agregue rápidamente, inicia un problema o solicita una solicitud en https://github.com/matsjoyce/codegolf-swipe-type/blob/master
- Las entradas se mantienen en https://github.com/matsjoyce/codegolf-swipe-type/blob/master/entries
- Los registros de cada ejecución del programa se mantienen en https://github.com/matsjoyce/codegolf-swipe-type/blob/master/logs
- Registro principal en https://github.com/matsjoyce/codegolf-swipe-type/blob/master/log.log
- La posición de cada clave se proporcionará como un archivo csv en el directorio actual llamado
keypos.csv
, con los valores x e y en relación conQ
(consulte https://github.com/matsjoyce/codegolf-swipe-type/blob/master/ keypos.csv ) - Cada llave mide 1,5 x 1,5 cm (la misma unidad que en keypos.csv)
Tablas de puntuación actual
lista de prueba ( registros ):
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
Carrera final
lista de prueba ( registros ):
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
Enhorabuena a todos y hgfdsasdertyuiopoiuy swertyuiopoijnhg!
l
, que no se duplica