У цьому завданні ваше завдання - знайти підрядки з заданою структурою.
Вхідні дані
Вхідними даними повинні бути два непусті буквено-цифрові рядки, візерунок 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