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 preprésente une sous-chaîne non vide contiguë tqui se produisent côte à côte et preprésente leur concaténation. Des caractères identiques correspondent à des sous-chaînes identiques; par exemple, le motif aareprésente tout carré non vide (une chaîne obtenue en concaténant une chaîne plus courte à lui-même). Ainsi, le motif aapeut correspondre à la sous-chaîne byebye, à chaque acorrespondance bye.
Production
Si le texte tcontient une sous-chaîne qui pcorrespond, 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 = byebyenowet p = aa, alors bye:byeest 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 tne contient pas de sous-chaîne correspondante, votre sortie sera un visage triste :(.
Règles et clarifications
Différents caractères de ppeuvent correspondre à des sous-chaînes identiques, ils p = abapeuvent donc correspondre à la chaîne AAA. Notez que les caractères doivent correspondre à des chaînes non vides; en particulier, si elle pest 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