Всім відомо, що таке кодування довжиною пробігу. Це вже було предметом багатьох проблем із кодовим гольфом. Ми розглянемо певну варіацію.
Приклад
Normal: 11222222222222222222233333111111111112333322
Run-length: 112(19)3(5)1(11)2333322
Число в дужках вказує кількість разів, коли відбувся попередній символ. У прикладі закодовано лише прогони з 5 і більше символів. Це тому, що кодування запусками 4 або менше не покращує кількість символів.
Виклик
Напишіть функцію / програму, яка реалізує цю варіацію кодування довжини виконання, але також може кодувати запуски з двох символів. Пробіли двох символів також повинні бути включені в дужки. Група також буде включена в дужки. Ваша програма повинна прийняти рядок як вхідний і вивести модифіковану рядок із модифікаціями, які скорочують рядок.
Приклад
Normal: 111244411144411144411167676767222222277777222222277777123123123123
Double run-length: 1112((444111)(3))67676767((2(7)7(5))(2))123123123123
Примітки
111не було закодовано, оскільки кодування його (1(3)) не коротше.- Рядок
444111виникає 3 рази, тому він закодований. 676767не було закодовано, оскільки((67)(4))довше, ніж раніше.222222277777222222277777не було закодовано як((222222277777)(2)). Чому? Тому що222222277777себе можна звести до2(7)7(5).123123123123не закодовано, оскільки ваша програма повинна обробляти пробіги з двох символів, а не трьох.
Це є код-гольфтому виграє найкоротший код. Автоматичний вимикач - це раннє подання.
Якщо я щось пропустив або якщо ви нічого не знаєте, будь ласка, повідомте мене в коментарях.
441444144414-> ((4414)(3))?
4414технічно це серія 4. Моя формулювання просто погана.
111111111можна закодувати як (1)(9)?
67с.