В 1984 году Майкл Крайтон написал программу BASIC для обеспечения безопасности, которая была опубликована в журнале Creative Computing. Программа попросит пользователя ввести фразу по своему выбору, запишет интервалы между нажатиями клавиш, а затем попросит ее повторить фразу. Если время слишком сильно отличается, программа определит пользователя как самозванца.
Ваше задание: создать версию программы Crichton на выбранном вами языке.
Правила:
Фразы для связи с пользователем («Пожалуйста, введите ключевую фразу», «Пожалуйста, введите ключевую фразу еще раз» и т. Д.) Считаются одним байтом каждый независимо от фактической длины. Это только для общения с пользователем, не пытайтесь скрыть программный код в строках.
Пройденный / неудачный тест должен основываться на среднем абсолютном значении процентного отклонения от исходных интервалов. Если строки не совпадают, либо верните ошибку, либо разрешите пользователю повторить попытку на ваше усмотрение.
Ключевая фраза не должна допускать пустую строку. В случае, если ключевая фраза слишком длинная для вашего строкового типа данных, либо усекать, либо запрещать и начинать заново, на ваше усмотрение.
Чувствительность теста (порог для теста на прохождение / неудачу) должна быть изменена в исходном коде.
Первоначально я предоставил бонус в 20% от общего числа байтов, если ваш исходный код может быть отформатирован так, чтобы он был похож на динозавра. Было отмечено, что это очень субъективно и, возможно, больше подходит для конкурса популярности, поэтому я убрал этот бонус. Однако я по-прежнему от всей души рекомендую форматировать динозавров, и если вы отформатируете свой код так, чтобы он выглядел как динозавр, вы можете вычесть любые чисто косметические комментарии, разрыв строки или пробельные символы из общего байтового числа.
Побеждает кратчайший счетчик байтов, с учетом настроек длины строки и форматирования динозавров.
Обратите внимание, что моя спецификация выше не совсем соответствует работе кода Crichton, копии которого можно найти в Интернете. Следуйте спецификации, не пытайтесь клонировать оригинал.
"Please type the key phrase"считается ли 1 байт, или только фраза считается, а цитируемая фраза считается 3 байтами ( ", фраза, ")? Является ли намеренным, что гораздо более длинный интервал и гораздо более короткий интервал "отменится" и станет еще одним? Должна ли программа проверять совпадение двух ключевых фраз?