Escreva um programa ou função que tenha uma string (ou o equivalente do seu idioma), determine se a string é uma palavra ou não e emita um valor verdadeiro ou falso.
(Isso não é uma duplicata de Isso é mesmo uma palavra? As palavras incorretas são geradas de uma maneira muito diferente que eu acredito que faz deste um desafio completamente diferente)
As palavras serão todas minúsculas, entre 5 e 10 caracteres, e não terão apóstrofos.
As palavras corretas são um subconjunto selecionado aleatoriamente da lista de palavras em inglês do SCOWL (tamanho 50).
As palavras incorretas são geradas por dois métodos: troca e substituição.
As palavras "trocadas" são geradas usando um shuffle Fisher-Yates modificado nas letras das palavras (reais) selecionadas aleatoriamente. Em vez de trocar as letras todas as vezes, uma carta pode ou não ser trocada (a probabilidade varia, portanto, algumas palavras serão mais realistas que outras). Se a nova palavra corresponder a uma palavra existente, o resultado será descartado e gerará outra palavra.
As palavras de "substituição" são geradas usando um método semelhante, mas em vez de trocar a letra por outra letra, cada letra tem a chance de ser substituída por outra letra aleatória.
Cada método é usado para gerar 50% das palavras falsas.
Pontuação
Sua função deve ter menos de 150 bytes . A pontuação é determinada da seguinte forma:
percentage of answers correct + ((150 - length of program) / 10)
Regras
Como isso lida com um grande número de casos de teste (cada lista de palavras tem 1000 palavras), um programa de teste automatizado é adequado. O testador automatizado não conta para a duração do programa; no entanto, deve ser publicado para que outros possam testá-lo.
- Sem brechas.
- Não há embutidos relacionados a ortografia / dicionário.
Recursos
Lista de palavras: http://pastebin.com/Leb6rUvt
Lista de não palavras (atualizada) : http://pastebin.com/rEyWdV7S
Outros recursos (lista de palavras SCOWL e o código usado para gerar as palavras aleatórias): https://www.dropbox.com/sh/46k13ekm0zvm19z/AAAFL25Z8ogLvXWTDmRwVdiGa?dl=0
quais
, paves
, colic
, supermax
. (Nota: Fiquei encantado ao descobrir que supermax
é uma palavra real)