Вступ
Імена файлів можуть бути дуже різними, починаючи від простого і blah.txt
закінчуючи 303549020150514101638190-MSP0.txt
. Перший зазвичай породжується людиною, тоді як останній часто генерується машиною. Чи не було б непогано мати просту функцію, щоб вчити здогадуватися про те, чи може файл вважатись "зручним для людини"?
Натхненний публікацією Едуарда Флоринеску, яка з тих пір була видалена. Його ідея була гарна, але просто потрібно було трохи розгорнутися.
Виклик
Напишіть програму або функцію на обрану вами мову, яка може зайняти рядок, і визначте, чи вважається вона "зручною для людини", як визначено цим завданням.
Деякі подальші деталі та правила такі:
- Введенням буде рядок, що складається з 95 символів для друку ascii.
- "дружній людині" визначається таким чином:
- Виключіть розгляд у розгляді. Розширення визначається як завершальний період, за яким слідує серія буквено-цифрових символів (всього 1, цілих 6).
- Не більше половини рядка за довжиною (за винятком розширення) може складатися з таких визначених угруповань символів (комбінованих):
- Десяткові символи довше 8 підряд.
- Шістнадцяткові символи (верхній нижній регістр xor) принаймні 16 підряд (повинні складатися з літер та цифр, з яких хоча б третина символів - цифри).
- Базові64 символи (використовуючи
%+=
як спеціальні символи) щонайменше 12 поспіль (повинні складатися з літер та цифр, змішаного регістру, з яких принаймні третина символів - це великі літери).
- Якщо будь-яке з перерахованих вище угруповань перетинається у визначенні (наприклад, таке, яке кваліфікується як base64, але має 8 цифр підряд), виберіть найдовший з них, який потрібно виключити.
- Вихідні дані повинні мати значення "химерність" або "хибність", залежно від того, чи вважається рядок "зручним для людини" чи ні.
- Припустимо, що буде використовуватися лише дійсний ввід. Не турбуйтеся про помилки.
Переможець визначатиметься за найкоротшою програмою / функцією. Вони будуть відібрані щонайменше за 7 днів або якщо / коли було достатньо заявок. У випадку зрівноваження відповідь, що надійшла раніше, перемагає.
Приклади
Ось кілька прикладів введення та виводу, з якими ваш код повинен вміти обробляти:
"results_for__michael_greer.txt.zip" => true
"Georg Feuerstein - Connecting the Dots.pdf" => true
"M People - Search for the Hero-ntuqTuc6HxM.mp4" => true
"index.html?v=QTR4WGVTUzFsV3d8NHxvcmlnaW5hbHx8MTExMTAxBHxodHRwOi8vLCwsLHRyLDcsMA%3D%3D.html" => false
"ol2DCE0SIyQC(173).pdf" => false
"d41d8cd98f00b204e9800998ecf8427e.md5" => false
"12792331_807918856008495_7076645197310150318_o.jpg" => false