En 1984, Michael Crichton a écrit un programme de sécurité en BASIC qui a été publié dans le magazine Creative Computing. Le programme demanderait à l'utilisateur de taper une phrase de son choix, enregistrer les intervalles entre les frappes, puis lui demander de retaper la phrase. Si les horaires différaient trop, le programme identifierait l'utilisateur comme imposteur.
Votre mission: créez une version du programme de Crichton dans la langue de votre choix.
Règles:
Les phrases pour communiquer avec l'utilisateur («Veuillez saisir la phrase clé», «Veuillez saisir à nouveau la phrase clé», etc.) comptent pour un octet chacune, quelle que soit la longueur réelle. Ceci est uniquement pour la communication utilisateur, n'essayez pas de masquer le code du programme dans les chaînes.
Le test de réussite / échec doit être basé sur la valeur absolue moyenne des écarts en pourcentage par rapport aux intervalles d'origine. Si les chaînes ne correspondent pas, retournez en cas d'échec ou autorisez l'utilisateur à réessayer, à votre discrétion.
La phrase clé ne doit pas autoriser une chaîne nulle. Dans le cas où la phrase clé est trop longue pour votre type de données de chaîne, tronquer ou interdire et recommencer, à votre discrétion.
La sensibilité du test (le seuil du test de réussite / d'échec) doit être réglable dans le code source.
À l'origine, j'ai fourni un bonus de 20% du nombre total d'octets si votre code source peut être formaté pour ressembler de manière reconnaissable à un dinosaure. Il a été souligné que cela est très subjectif et peut-être plus approprié pour un concours de popularité, j'ai donc supprimé ce bonus. Cependant, j'encourage toujours vivement le formatage des dinosaures, et si vous formatez votre code pour ressembler à un dinosaure, vous pouvez déduire tous les commentaires purement cosmétiques, les sauts de ligne ou les espaces blancs de votre total d'octets.
Le nombre d'octets le plus court gagne, sous réserve de la longueur de la chaîne et des ajustements de formatage des dinosaures.
Notez que mes spécifications ci-dessus ne correspondent pas exactement au fonctionnement du code de Crichton, dont des copies peuvent être trouvées en ligne. Suivez les spécifications, n'essayez pas de cloner l'original.
"Please type the key phrase"compte comme 1 octet, ou seulement la phrase compte et la phrase citée compte comme 3 octets ( ", phrase, ")? Est-il intentionnel qu'un intervalle beaucoup plus long et un intervalle beaucoup plus court "s'annulent" et redeviennent encore? Le programme doit-il vérifier que les deux phrases clés correspondent?