У дуже незвичайній аварії, що стосується невеликого зразка радію, китового кита та трьох жувальних ведмедів, частина вихідного коду The Management ™ була вимкнена. Мало що знає бос Управління ™, насправді відповідали поліцейські ©, намагаючись зірвати "злі" плани Управління ™. Тож Robbers® найняли спробу витягнути оригінальний код, бо кому не подобається бути злим часом?
Примітка. Цей виклик був сильно натхненний розшифруванням вихідного коду .
Опис
Це виклик копів та грабіжників .
- У поліцейських буде написати програму (мутантний код) , який виконує завдання # 1 (а також написати програму , яка виконує завдання # 2, але тримається в секреті).
- У розбійників будуть намагатися переламати «мутацію» і змінити вихідний код в код , який виконує завдання # 2.
У цьому виклику завдання №1 полягатиме в тому, щоб вивести n
перше просте число , а завдання №2 - вивести n
число число Фібоначчі (що так чи інакше лихо, на думку Cops © у будь-якому випадку). Послідовність Фібоначчі визначається як ( n=1
→ 1
; n=2
→ 1
; n=3
→ 2
; ... ...), а прості числа визначаються як ( n=1
→ 2
; n=2
→ 3
; n=3
→ → 5
; ... ...).
Мета поліцейських - мінімізувати різницю між програмами, які виконують завдання №1 та завдання №2, водночас не дозволяючи грабіжникам відтворити код, який виконує завдання №2.
Правила копа
Копи напишуть дві програми (одну, яка виконує завдання №1, та одну, яка виконує завдання №2), та оприлюднить таку інформацію:
- Перша програма (який виводить
n
е просте число) - Редагувати відстань Левенштейна між першою програмою і другий програми
- Мова програмування, на якій написані обидві програми (повинна бути однаковою для обох програм)
Наступні обмеження стосуються обох програм:
- Вони повинні бути довжиною 128 символів або менше.
- Вони повинні використовувати тільки ASCII для друку (плюс нові рядки, які також дозволені).
- Їм потрібно зайняти менше 10 секунд для запуску
n=45
, і від них не потрібно виробляти правильний вихід для жодногоn>45
. - Вони не повинні використовувати будь-які хеширующие чи криптографічні функції.
Правила грабіжника
Грабіжник спробує змінити програму поліцейського (яка виконує завдання №1) на програму, яка виконує завдання №2 (не обов'язково оригінальну програму, написану поліцейським) на відстань редагування, вказану поліцейським.
Пошкоджене подання вже не може бути зламане (лише перший грабіжник, який зламає подання, отримує кредит).
Після злому подання виконайте такі дії:
- Опублікуйте відповідь на супровідне запитання (посилання) на це завдання , вказавши мову, ваше рішення та посилання на оригінальну відповідь.
- Залиште коментар з текстом "Зламаний", який посилається на вашу опубліковану відповідь.
- Відредагуйте відповідь поліцейського, якщо у вас є права редагування (якщо ви цього не зробите, або зачекайте, поки хтось із необхідними привілеями зробить це за вас, або запропонуйте редагувати).
Оцінка балів
Якщо програма поліцейського залишається нерозробленою протягом 1 тижня, поліцейський може розмістити оригінальний код, який виконує завдання №2 (на вказаному відстані редагування), і подання з цього моменту вважається "безпечним". Безпечне подання, що має найменшу відстань редагування, виграє. У разі вирівнювання виграє найкоротша програма (оригінал, що виконує завдання №1). Якщо два подання ще не зв'язані, виграє те, що було розміщено раніше.
Якщо грабіжник успішно зламає подання поліцейського, оцінка грабіжника збільшується на відстань редагування цього повідомлення. Наприклад, грабіжник, який розбиває подання з відстанью редагування 3 і один з відстані 5, заробляє 8 балів. Перемагає грабіжник з найвищим балом. У разі нічиїх перших перемагає грабіжник, який заробив рахунок.