コンテキスト付きの文字列
この課題のために、コンテキストを含む文字列は、左コンテキスト、データ部分、および右コンテキストと呼ばれるトリプルの文字列です。長い文字列の部分文字列を表します。|セパレータとして垂直パイプを使用するため、コンテキストのある文字列の例はcod|e-go|lfで、左のコンテキストはcod、データはe-go、右のコンテキストはlfです。この例は、の部分文字列e-goを表しcode-golfます。
ここで、2つの文字列をコンテキストに連結するには、とを使用して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|2番目の単語は空の右コンテキストを有する場合、。配置図は
a|b b|c d
a a b b|c d|
ここで、2番目の単語の左側のコンテキストは、最初の単語のコンテキストよりもさらに広がっています。連結はaa|bbcd|です。
しかし、ちょっと待ってください。アライメント図の文字が一致しない場合、連結は存在しません。例としての図aa|bb|cc及びc|c|cIS
a a|b b|c c
c|c|c
どこbとc4列目には同意できないので、それらを連結することができません。
タスク
あなたの仕事は|、上記のように部分で区切られたコンテキストを持つ2つの文字列を取り込み、存在する場合は連結を、存在しない場合は他の何かを出力するプログラムを作成することです。「その他」は、コンテキストを含む有効な文字列でなく、すべての場合で同じである限り、出力なしを含む任意の値にできます。ただし、エラーをスローすることはできません。STDINから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=""の定義に追加&することで解決します。仕様でこれを明示的に指定しなかったのが残念です。編集します。