带上下文的字符串
出于此挑战的目的,具有上下文的字符串是字符串的三元组,称为左上下文,数据部分和右上下文。它表示较长字符串的子字符串。我们使用垂直管道|
作为分隔符,因此具有上下文的字符串的示例为cod|e-go|lf
,其中左侧上下文为cod
,数据为e-go
,右侧上下文为lf
。本实施例代表子串e-go
的code-golf
。
现在,要使用上下文将两个字符串连接起来,我们使用aa|bcc|dee
和cc|de|eee
作为示例,进行如下操作。我们按照图中的对齐字符串
a a|b c c|d e e
c c|d e|e e e
以便它们的数据部分相邻。在这种情况下,串联的数据部分是数据部分的串联bccde
。在这种情况下,左边的上下文是进一步延伸到第一数据部分左边的部分aa
。同样,正确的上下文是eee
,因此串联是带有context的字符串aa|bccde|eee
。对于第二个示例,请考虑a|bb|cd
和aabb|cd|
,其中第二个单词的权利上下文为空。对齐图是
a|b b|c d
a a b b|c d|
第二个单词的左上下文比第一个单词的左上下文延伸得更多。的串联是aa|bbcd|
。
但是,等等,有一个陷阱:如果对齐图的字母不匹配,则表示串联不存在!作为一个例子,对图aa|bb|cc
和c|c|c
IS
a a|b b|c c
c|c|c
第四列的b
和c
不一致,因此无法将它们串联在一起。
任务
您的工作是编写一个程序,该程序使用上下文中包含两个字符串的字符串,它们的各部分之间的分隔|
符如上所述,如果存在则输出其串联,否则将其串联。“其他”可以是任何值,包括没有输出,只要它不是带上下文的有效字符串,并且在所有情况下都相同。但是,抛出错误是不可接受的。您可以提供STDIN-to-STDOUT程序或函数,也可以接受匿名函数。最小的字节数获胜,并且不允许出现标准漏洞。
测试用例
aa|bcc|dee cc|de|eee -> aa|bccde|eee
a|bb|cd aabb|cd| -> aa|bbcd|
a|b|cccd aab|cc|c -> aa|bcc|cd
a|b|c b||cd -> a|b|cd
aa|bb|cc c|c|c -> None
aaa|b|c abb|cd|d -> None
|bb|cd abb|c|ed -> None
a|b|c a||cd -> None
|1<2=""
到的定义&
应该可以解决该问题。我很抱歉,我没有在规格更明确指定这一点,我会在编辑它。