Nesse desafio, sua tarefa é localizar substrings com uma determinada estrutura.
Entrada
Sua entrada deve ser duas cadeias alfanuméricas não vazias, um padrão p e um texto t . A ideia é que cada caractere prepresente uma subcadeia não vazia contígua da tqual ocorra um ao lado do outro e prepresente sua concatenação. Caracteres idênticos correspondem a substrings idênticos; por exemplo, o padrão aarepresenta qualquer quadrado não vazio (uma sequência obtida concatenando uma sequência mais curta para si mesma). Assim, o padrão aapode corresponder à substring byebye, a cada acorrespondência bye.
Resultado
Se o texto tcontiver uma substring que pcorresponda, sua saída será essa substring, com dois pontos :inseridos entre as strings que correspondem aos caracteres de p. Por exemplo, se tivermos t = byebyenowe p = aa, então bye:byeé uma saída aceitável. Pode haver várias opções para a substring correspondente, mas você deve gerar apenas uma delas.
Se tnão contiver uma substring correspondente, sua saída será um rosto triste :(.
Regras e esclarecimentos
Caracteres diferentes de ppodem corresponder a substrings idênticos, portanto, p = abapodem corresponder à string AAA. Observe que os caracteres devem corresponder a cadeias não vazias; em particular, se pfor maior que t, a saída deve ser :(.
Você pode escrever um programa completo ou uma função e também pode alterar a ordem das duas entradas. A menor contagem de bytes vence e as brechas padrão não são permitidas.
Casos de teste
Dado no formato pattern text -> output. Observe que outras saídas aceitáveis podem existir.
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