В этой задаче ваша задача - найти подстроки с заданной структурой.
вход
Ваш ввод должен состоять из двух непустых буквенно-цифровых строк, шаблона p
и текста t
. Идея состоит в том, что каждый символ p
представляет собой непрерывную непустую подстроку, t
которая находится рядом друг с другом, и p
представляет их конкатенацию. Одинаковые символы соответствуют одинаковым подстрокам; например, шаблон aa
представляет собой любой непустой квадрат (строка, полученная путем конкатенации более короткой строки к себе). Таким образом, шаблон aa
может соответствовать подстроке byebye
, с каждым a
соответствием bye
.
Выход
Если текст t
содержит подстроку, которая p
соответствует, то ваша продукция должна быть этой подстрокой с двоеточиями, :
вставленными между строками, которые соответствуют символам p
. Например, если у нас есть t = byebyenow
и p = aa
, то bye:bye
это приемлемый вывод. Может быть несколько вариантов для соответствующей подстроки, но вы должны вывести только один из них.
Если t
не содержит подходящей подстроки, ваш вывод должен быть грустным лицом :(
.
Правила и разъяснения
Разные символы p
могут соответствовать одинаковым подстрокам, поэтому p = aba
могут соответствовать строке AAA
. Обратите внимание, что символы должны соответствовать непустым строкам; в частности, если p
оно длиннее t
, вывод должен быть :(
.
Вы можете написать полную программу или функцию, а также изменить порядок двух входов. Побеждает меньшее количество байтов, и стандартные лазейки запрещены.
Тестовые случаи
Дано в формате pattern text -> output
. Обратите внимание, что могут существовать другие приемлемые результаты.
a Not -> N
aa Not -> :(
abcd Not -> :(
aaa rerere -> re:re:re
xx ABAAAB -> A:A
MMM ABABBAABBAABBA -> ABBA:ABBA:ABBA
x33x 10100110011001 -> 10:1001:1001:10
abcacb 0a00cca0aa0cc0ca0aa0c00c0aaa0c -> c:a0aa:0c:c:0c:a0aa
abccab 0a00cca0aa0cc0ca0aa0c00c0aaa0c -> a:a:0c0:0c0:a:a
abcbcab 0a00cca0aa0cc0ca0aa0c00c0aaa0c -> :(
abcbdcab 0a00cca0aa0cc0ca0aa0c00c0aaa0c -> 00:c:ca0aa0c:c:0:ca0aa0c:00:c
O(2^((n * (n + 1))/2))
: P