A próxima revolução na digitação em laptops foi lançada no dia primeiro de abril de 2014 pela SwiftKey . No entanto, quero ser a primeira pessoa a escrever um nano clone deslizante, mas como não consigo encontrar um bom texto de furto na biblioteca de texto real e não posso esperar por eles, pergunto aqui.
Tarefa
Escreva um programa que receba texto de furto e produza o equivalente em texto real. Exemplo:
Input: hgrerhjklo
Output: hello
Quando o usuário faz:
Outros exemplos:
Input: wertyuioiuytrtjklkjhgfd
Output: world
Input: poiuytrtyuioiugrewsasdfgbhnmkijnbg
Output: programming
Input: poiuygfdzxcvhjklkjhgres
Output: puzzles
Input: cvhjioiugfde
Output: code
Input: ghiolkjhgf
Output: golf
Regras
- O programa incluirá uma palavra 'swiped' em stdin ou argv
- A primeira e a última letra da entrada swiped serão iguais à primeira e à última letra da palavra real
- Você pode assumir que o usuário fará linhas razoavelmente retas, mas você pode usar os dados da amostra para verificar isso (eu fiz os dados da amostra e os dados finais do teste)
- Para entrada ambígua, você pode selecionar qualquer saída, mas tentarei erradicar toda ambiguidade dos dados de teste
- Esta palavra estará nesta lista de palavras (mas passou o dedo). A lista de palavras estará no diretório atual e pode ser lida (nova linha separada, será nomeada
wordlist
, sem extensão). - O furto conterá apenas caracteres alfabéticos em minúsculas
- O furto pode conter caracteres duplicados, se o usuário pausar em uma tecla
- O programa deve produzir em stdout (caso não importe)
- O programa deve retornar
0
como o código de retorno - Você deve fornecer o comando de execução, comando de compilação (se necessário), nome e qual caminho de entrada usar
- Aplicam-se brechas padrão (embora possam não ajudar)
- Não são permitidas bibliotecas não integradas
- Soluções determinísticas, não-golfe / ofuscadas preferidas
- Sem gravação de arquivo, rede, etc.
- Seu código deve ser executado em um segundo ou menos (seu código é executado uma vez por palavra)
- As execuções de pontuação são executadas em um processador Intel i7 Haswell, com 4 códigos virtuais (2 reais), para que você possa usar threads se precisar
- Comprimento máximo do código de 5000 bytes
- O idioma usado deve ter uma versão gratuita (sem teste) disponível para Linux (Arch Linux, se isso importa)
Critério vencedor
- O vencedor é a solução mais precisa (pontuada pelo programa de controle , usando a lista de testes fornecida)
- A popularidade é o desempate
- A tabela de pontuação será atualizada a cada poucos dias
- Tempos limite e falhas contam como falhas
- Esse desafio dura duas semanas ou mais, dependendo da popularidade
- A pontuação final usará uma lista de palavras diferente e selecionada aleatoriamente (mesmo tamanho, da mesma lista de palavras)
De outros
- Você pode usar o programa de controle para testar seu programa
- Se você é impaciente e deseja que seu programa seja atualizado / adicionado rapidamente, inicie um problema ou solicite a solicitação em https://github.com/matsjoyce/codegolf-swipe-type/blob/master
- As entradas são mantidas em https://github.com/matsjoyce/codegolf-swipe-type/blob/master/entries
- Os logs de cada execução do programa são mantidos em https://github.com/matsjoyce/codegolf-swipe-type/blob/master/logs
- Registro principal em https://github.com/matsjoyce/codegolf-swipe-type/blob/master/log.log
- A posição de cada chave será fornecida como um arquivo csv no diretório atual chamado
keypos.csv
, com os valores x e y dados em relação aQ
(consulte https://github.com/matsjoyce/codegolf-swipe-type/blob/master/ keypos.csv ) - Cada tecla mede 1,5 x 1,5 cm (mesma unidade do keypos.csv)
Current Score Boards
lista de teste ( logs ):
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 de teste ( logs ):
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
Bem feito a todos e hgfdsasdertyuiopoiuy swertyuiopoijnhg!
l
, que não é dobrado.