Все знают, что такое кодирование длин серий. Это уже было предметом многих испытаний в гольф-коде. Мы будем смотреть на определенный вариант.
пример
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не был закодирован, потому что кодировка it (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с.