Об'єктивна
Напишіть процедуру, яка приймає рядок друкованих символів 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
?