En 1984, Michael Crichton escribió un programa de seguridad en BASIC que fue publicado en la revista Creative Computing. El programa le pedirá al usuario que escriba una frase de su elección, registre los intervalos entre las pulsaciones de teclas y luego le pida que vuelva a escribir la frase. Si los tiempos diferían demasiado, el programa identificaría al usuario como un impostor.
Su tarea: cree una versión del programa de Crichton en el idioma que elija.
Reglas:
Las frases para comunicarse con el usuario ("Escriba la frase clave", "Escriba la frase clave nuevamente", etc.) cuentan como un byte, independientemente de la longitud real. Esto es solo para la comunicación del usuario, no intente ocultar el código del programa en las cadenas.
La prueba de aprobación / reprobación debe basarse en el valor absoluto promedio de las variaciones porcentuales de los intervalos originales. Si las cadenas no coinciden, devuelva el error o permita que el usuario lo intente nuevamente, a su discreción.
La frase clave no debe permitir una cadena nula. En el caso de que la frase clave sea demasiado larga para su tipo de datos de cadena, ya sea truncar o rechazar y comenzar de nuevo, a su discreción.
La sensibilidad de la prueba (el umbral para la prueba de aprobación / reprobación) debe ser ajustable en el código fuente.
Originalmente proporcioné una bonificación del 20% del recuento total de bytes si su código fuente puede formatearse para parecerse a un dinosaurio. Se ha señalado que esto es altamente subjetivo y quizás más apropiado para un concurso de popularidad, por lo que he eliminado este bono. Sin embargo , todavía animo de todo corazón el formateo de dinosaurios, y si formatea su código para que parezca un dinosaurio, puede deducir cualquier comentario puramente cosmético, salto de línea o caracteres de espacio en blanco del total de bytes.
El recuento de bytes más corto gana, sujeto a la longitud de la cadena y los ajustes de formato de dinosaurio.
Tenga en cuenta que mi especificación anterior no coincide exactamente con la operación del código de Crichton, cuyas copias se pueden encontrar en línea. Siga las especificaciones, no intente clonar el original.
"Please type the key phrase"Cuenta como 1 byte, o solo la frase cuenta y la frase citada cuenta como 3 bytes ( ", frase, ")? ¿Es intencional que un intervalo mucho más largo y un intervalo mucho más corto se "cancelen" y se vuelvan aún más? ¿El programa tiene que verificar que las dos frases clave coincidan?