Проведя некоторое время на этом сайте, я пришел к тому, чтобы насладиться вещами как можно короче. Это может быть причиной того, что меня недавно обидели строки, содержащие одни и те же символы более одного раза. Ваша задача - написать функцию или программу, которая объединяет данную строку в соответствии со следующими правилами:
Начните с 0-конденсата , то есть ищите первую (самую левую) пару тех же символов с 0 другими символами между ними. Если такая пара найдена, удалите один из двух символов и перезапустите алгоритм, выполнив еще одну 0-конденсацию . Если такая пара не найдена, перейдите к следующему шагу. Примеры:
programming
-C0->programing
aabbcc
-C0->abbcc
test
-C0->test
Затем выполните 1-конденсацию , то есть найдите первую пару одинаковых символов с 1 другим символом между ними. Если такая пара найдена, удалите один из них и все символы между ними и перезапустите с 0-конденсатом . Если такая пара не найдена, перейдите к следующему шагу. Примеры:
abacac
-C1->acac
java
-C1->ja
Продолжайте с 2-конденсацией и так далее до n-конденсации, где n - это длина исходной строки, каждый раз при перезапуске после конденсации удаляются некоторые буквы. Примеры:
programing
-C2->praming
abcdafg
-C3->afg
Результирующая строка называется сжатой и содержит каждый символ не более одного раза.
Входные данные:
Строка в нижнем регистре печатаемых символов ascii.
Выход:
Конденсируют строки в соответствии с указанными выше правилами.
Примеры:
examples -> es
programming -> praming
puzzles -> puzles
codegolf -> colf
andromeda -> a
abcbaccbabcb -> acb
if(x==1):x++ -> if(x+
fnabnfun -> fun
abcdefae -> abcde
Подробные примеры, чтобы уточнить, как работает алгоритм:
fnabnfun -C0-> fnabnfun -C1-> fnabnfun -C2-> fnfun -C0-> fnfun -C1-> fun -C0-> fun
-C1-> fun -C2-> ... -C8-> fun
abcbaccbabcb -C0-> abcbacbabcb -C0-> abcbacbabcb -C1-> abacbabcb -C0-> abacbabcb
-C1-> acbabcb -C0-> acbabcb -C1-> acbcb -C0-> acbcb -C1-> acb -C0-> acb
-C1-> ... -C12-> acb
Ваш подход не должен реализовывать алгоритм сверху, пока ваше решение и алгоритм возвращают одинаковые выходные данные для всех разрешенных входных данных. Это вызов для игры в гольф .
Спасибо @Linus за полезные комментарии в песочнице!