У 1984 році Майкл Кріктон написав програму безпеки в BASIC, що була опублікована в журналі Creative Computing. Програма попросить користувача ввести фразу за власним вибором, записати інтервали між натисканнями клавіш, а потім попросити її повторно ввести фразу. Якщо таймінги відрізнялися занадто великою кількістю, програма ідентифікувала б користувача як самозванець.
Ваше завдання: створити версію програми Кріктона мовою, яку ви обрали.
Правила:
Фрази для спілкування з користувачем ("Будь ласка, введіть ключову фразу", "Будь ласка, введіть ключову фразу ще раз" тощо), рахуються як один байт кожен незалежно від фактичної довжини. Це лише для спілкування з користувачем, не намагайтеся приховувати програмний код у рядках.
Тест проходження / відмови повинен базуватися на середньому абсолютному значенні відсоткових відхилень від початкових інтервалів. Якщо рядки не збігаються, або повертаються невдало, або дозволяють користувачу спробувати ще раз, на ваш розсуд.
Ключова фраза не повинна містити нульового рядка. У випадку, якщо ключова фраза є занадто довгою для вашого типу даних рядка, або скорочувати, або забороняти, і починати спочатку на свій розсуд.
Чутливість тесту (поріг випробування на пропуск / відмову) повинна регулюватися у вихідному коді.
Я спочатку надав бонус у розмірі 20% від загальної кількості байтів, якщо ваш вихідний код може бути відформатований так, що він може нагадувати динозавра. Було зазначено, що це дуже суб'єктивно і, можливо, більше підходить для конкурсу на популярність, тому я видалив цей бонус. Однак я все ще від душі заохочую форматування динозавра, і якщо ви відформатуєте свій код, щоб він виглядав як динозавр, ви можете вирахувати будь-які чисто косметичні коментарі, символи пробілів чи пробілів із загальної кількості байтів.
Виграє найменший кількість байтів, залежно від коригування формату довжини рядка та динозавра.
Зауважте, що моя специфікація, що описана вище, точно не відповідає дії коду Кріктона, копії якого можна знайти в Інтернеті. Дотримуйтесь специфікації, не намагайтеся клонувати оригінал.
"Please type the key phrase"
вважається 1 байт, чи вважається лише фраза та цитована фраза вважається 3 байтами ( "
, фраза, "
)? Чи навмисно, що набагато більш тривалий інтервал і набагато коротший інтервал "скасуються" і знову стануть ще? Чи повинна програма перевірити, чи відповідають дві ключові фрази?