In this challence, your task is to locate substrings with a given structure.
Your input shall be two non-empty alphanumeric strings, a pattern
p and a text
The idea is that each character of
p represents a contiguous non-empty substring of
t which occur next to each other, and
p represents their concatenation.
Identical characters correspond to identical substrings; for example, the pattern
aa represents any non-empty square (a string obtained by concatenating a shorter string to itself).
Thus the pattern
aa can match the substring
byebye, with each
If the text
t contains a substring that
p matches, then your output shall be that substring, with colons
: inserted between the strings that correspond to characters of
For example, if we have
t = byebyenow and
p = aa, then
bye:bye is an acceptable output.
There may be several choices for the matching substring, but you shall only output one of them.
t does not contain a matching substring, your output shall be a sad face
Rules and Clarifications
Different characters of
p can correspond to identical substrings, so
p = aba can match the string
Note that the characters must correspond to non-empty strings; in particular, if
p is longer than
t, the output must be
You can write a full program or a function, and you can also change the order of the two inputs. The lowest byte count wins, and standard loopholes are disallowed.
Given in the format
pattern text -> output.
Note that other acceptable outputs may exist.
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