Об'єктивна
Напишіть процедуру, яка приймає рядок друкованих символів ASCII, s та повертає рядок, що містить ті самі символи, що і s , упорядкована так, що жодна двосимвольна підрядка не з’являється більше одного разу. Програма повинна обробляти всі рядки орієнтиру (див. Нижче) протягом однієї хвилини на кожному з сучасних комп'ютерів . Я також присуджую спеціальний бонус у 50 повторень за найнижчу відповідь, яка обробляє будь-яку дійсну 30-символьну рядок менше ніж за одну хвилину.
Наприклад, з урахуванням вводу Mississippi, дійсним буде вихід issiMspiips(жодні двосимвольні підрядки не з’являються двічі), тоді як недійсний вихід ipMsispiiss(оскільки підрядка isз’являється двічі).
Звичайний може мати форму:
- повне зчитування програми з
stdin(або еквівалентного) або командного рядка та вихід уstdout(або еквівалент) - функція, що приймає аргумент одного рядка і повертає рядок
Ви можете припустити, що рядок введення завжди допускає принаймні один дійсний вихід.
Змагання
Ваша рутина повинна містити 5 або більше рядків коду, розділених новими рядками. Порожні рядки (що включає рядки, що містять лише пробіли) ігноруються у всіх контекстах і не враховуються до загального числа рядків.
Заміна будь-яких двох рядків у вихідному коді має призвести до фатальної помилки. Під "фатальною помилкою" ми маємо на увазі будь-яке з наступних умов:
- вихідний код не вдається компілювати, при цьому компілятор / інтерпретатор оголошує фатальну помилку
- звичайний перериває роботу зі смертельною помилкою виконання або з необробленим винятком із виконання
- рутина вимушена в різке, ненормальне завершення програми, яке не видає жодного виводу, за винятком можливого повідомлення про помилку та / або дамп стека
Крім того , замість рядків можуть використовуватися суміжні блоки коду, що не містять символів нового рядка. Кожен з цих блоків повинен відображатися у власному рядку у вихідному файлі, розуміючи, що нові рядки викреслюються до того, як вихідний код буде зібраний / інтерпретований.
Наприклад, код
aaaa
bbbb
cccc
конденсується до
aaaabbbbcccc
перед оцінкою.
У цьому режимі умова фатальної помилки застосовується до заміни будь-яких двох блоків коду (і, таким чином, до заміни рядків у вихідному коді до того, як нові рядки будуть зняті). Отже, у наведеному вище прикладі процедури aaaaccccbbbb, bbbbaaaaccccі ccccbbbbaaaaвсі вони повинні створювати фатальні помилки, або під час компіляції, або під час виконання.
Подання, що використовують цей альтернативний режим, повинні оголосити про його використання.
Оцінка балів
Нехай n - кількість не порожніх текстових рядків у вашому вихідному файлі, з n ≥ 5. Нехай c - кількість байтів, що складається з найдовшої текстової лінії (по довжині байтів) у вашому вихідному файлі, не враховуючи жодного останнього нового рядка.
Оцінка подання подається c ( n + 10).
Подання з найнижчою оцінкою є переможцем.
Удачі. ;)
Бенчмарк Струни
Abracadabra Alacazam
Is Miss. Mississauga Missing?
Ask Alaska's Alaskans
GGGGAAAATTTTCCCCgggaaatttccc
A Man A Plan A Canal Panama
Mspiisiipssєдине повторення, iiяке не відбувається в Mississippi?
CooliO, вихідoOoCli?