Dans cette challence, votre tâche consiste à localiser des sous-chaînes avec une structure donnée.
Contribution
Votre entrée doit être deux chaînes alphanumériques non vides, un modèle p
et un texte t
. L'idée est que chaque caractère de p
représente une sous-chaîne non vide contiguë t
qui se produisent côte à côte et p
représente leur concaténation. Des caractères identiques correspondent à des sous-chaînes identiques; par exemple, le motif aa
représente tout carré non vide (une chaîne obtenue en concaténant une chaîne plus courte à lui-même). Ainsi, le motif aa
peut correspondre à la sous-chaîne byebye
, à chaque a
correspondance bye
.
Production
Si le texte t
contient une sous-chaîne qui p
correspond, alors votre sortie doit être cette sous-chaîne, avec des deux-points :
insérés entre les chaînes qui correspondent aux caractères de p
. Par exemple, si nous avons t = byebyenow
et p = aa
, alors bye:bye
est une sortie acceptable. Il peut y avoir plusieurs choix pour la sous-chaîne correspondante, mais vous ne devez en sortir qu'un seul.
Si t
ne contient pas de sous-chaîne correspondante, votre sortie sera un visage triste :(
.
Règles et clarifications
Différents caractères de p
peuvent correspondre à des sous-chaînes identiques, ils p = aba
peuvent donc correspondre à la chaîne AAA
. Notez que les caractères doivent correspondre à des chaînes non vides; en particulier, si elle p
est plus longue que t
, la sortie doit être :(
.
Vous pouvez écrire un programme complet ou une fonction, et vous pouvez également changer l'ordre des deux entrées. Le nombre d'octets le plus bas l'emporte et les failles standard sont interdites.
Cas de test
Donné dans le format pattern text -> output
. Notez que d'autres sorties acceptables peuvent exister.
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