Em 1984, Michael Crichton escreveu um programa de segurança no BASIC, publicado na revista Creative Computing. O programa solicita que o usuário digite uma frase de sua escolha, registre os intervalos entre as teclas e, em seguida, peça para redigitar a frase. Se os horários diferissem demais, o programa identificaria o usuário como um impostor.
Sua tarefa: crie uma versão do programa de Crichton no idioma de sua escolha.
Regras:
As frases para comunicação com o usuário ("Digite a frase-chave", "Digite a frase-chave novamente" etc.) contam como um byte cada, independentemente do tamanho real. Isso é apenas para comunicação do usuário, não tente ocultar o código do programa nas strings.
O teste de aprovação / reprovação deve ser baseado no valor absoluto médio das variações percentuais dos intervalos originais. Se as seqüências não corresponderem, retorne a falha ou permita que o usuário tente novamente, a seu critério.
A frase-chave não deve permitir uma cadeia nula. No caso de a frase-chave ser muito longa para o seu tipo de dados de string, truncar ou não permitir e reiniciar, a seu critério.
A sensibilidade do teste (o limite para o teste de aprovação / reprovação) deve ser ajustável no código fonte.
Originalmente, forneci um bônus de 20% da contagem total de bytes, se o código-fonte puder ser formatado para se parecer com um dinossauro. Foi apontado que isso é altamente subjetivo e talvez mais apropriado para um concurso de popularidade; portanto, removi esse bônus. No entanto , ainda encorajo com entusiasmo a formatação de dinossauros, e se você formatar seu código para se parecer com um dinossauro, poderá deduzir quaisquer comentários puramente cosméticos, quebra de linha ou caracteres de espaço em branco do total de bytes.
Ganhos mais curtos de contagem de bytes, sujeitos a ajustes de formatação de comprimento de string e dinossauros.
Observe que minha especificação acima não corresponde exatamente à operação do código de Crichton, cujas cópias podem ser encontradas online. Siga as especificações, não tente clonar o original.
"Please type the key phrase"conta como 1 byte ou apenas a frase conta e a frase entre aspas conta como 3 bytes ( ", frase ")? É intencional que um intervalo muito mais longo e um intervalo muito mais curto "cancelem" e se tornem iguais novamente? O programa precisa verificar se as duas frases-chave correspondem?