In questa sfida, il tuo compito è individuare sottostringhe con una determinata struttura.
Ingresso
Il tuo input deve essere due stringhe alfanumeriche non vuote, un modello p
e un testo t
. L'idea è che ogni personaggio di p
rappresenta una sottostringa contigua non vuota di t
cui si verificano uno accanto all'altro e p
rappresenta la loro concatenazione. I caratteri identici corrispondono a sottostringhe identiche; ad esempio, il modello aa
rappresenta qualsiasi quadrato non vuoto (una stringa ottenuta concatenando una stringa più corta a se stessa). Pertanto, il motivo aa
può corrispondere alla sottostringa byebye
, con ogni a
corrispondenza bye
.
Produzione
Se il testo t
contiene una sottostringa che p
corrisponde, allora l'output deve essere quella sottostringa, con due punti :
inseriti tra le stringhe che corrispondono ai caratteri di p
. Ad esempio, se abbiamo t = byebyenow
e p = aa
, quindi bye:bye
è un output accettabile. Potrebbero esserci diverse opzioni per la sottostringa corrispondente, ma ne dovrai produrre solo una.
Se t
non contiene una sottostringa corrispondente, l'output deve essere una faccia triste :(
.
Regole e chiarimenti
Caratteri diversi di p
possono corrispondere a sottostringhe identiche, quindi p = aba
possono corrispondere alla stringa AAA
. Si noti che i caratteri devono corrispondere a stringhe non vuote; in particolare, se p
è più lungo di t
, l'output deve essere :(
.
È possibile scrivere un programma completo o una funzione, nonché modificare l'ordine dei due ingressi. Vince il conteggio di byte più basso e non sono consentite scappatoie standard.
Casi test
Dato nel formato pattern text -> output
. Si noti che potrebbero esistere altre uscite accettabili.
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