Strings com contexto
Para os propósitos desse desafio, uma string com contexto é um triplo de strings, chamado contexto esquerdo , parte de dados e contexto correto . Representa uma substring de uma string mais longa. Usamos o tubo vertical |
como um separador; portanto, um exemplo de uma string com contexto é cod|e-go|lf
: onde está o contexto esquerdo cod
, os dados e-go
e o contexto correto lf
. Este exemplo representa a substring e-go
de code-golf
.
Agora, para concatenar duas seqüências de caracteres com o contexto, procedemos da seguinte maneira, usando aa|bcc|dee
e cc|de|eee
como exemplos. Alinhamos as strings como no diagrama
a a|b c c|d e e
c c|d e|e e e
para que suas partes de dados sejam adjacentes. A parte de dados da concatenação é a concatenação das partes de dados, neste caso bccde
. O contexto esquerdo é a parte que se estende mais à esquerda da primeira parte de dados, neste caso aa
. Da mesma forma, o contexto correto é eee
, portanto, a concatenação é a sequência com o contexto aa|bccde|eee
. Para um segundo exemplo, considere a|bb|cd
e aabb|cd|
, onde a segunda palavra tem um contexto correto vazio. O diagrama de alinhamento é
a|b b|c d
a a b b|c d|
onde o contexto esquerdo da segunda palavra se estende além do da primeira. A concatenação é aa|bbcd|
.
Mas espere, há uma dica: se as letras do diagrama de alinhamento não coincidirem, a concatenação não existe! Como exemplo, o diagrama de aa|bb|cc
e c|c|c
é
a a|b b|c c
c|c|c
onde b
e c
na quarta coluna discordam, portanto não podem ser concatenadas.
A tarefa
Seu trabalho é escrever um programa que use duas seqüências de caracteres com contexto cujas partes são separadas por |
acima, e que produza sua concatenação, se houver, e outra coisa, se não. O "algo mais" pode ter qualquer valor, incluindo nenhuma saída, desde que não seja uma sequência válida com contexto e seja a mesma em todos os casos. No entanto, lançar um erro não é aceitável. Você pode fornecer um programa STDIN para STDOUT ou uma função, e funções anônimas também são aceitas. A menor contagem de bytes vence e as brechas padrão não são permitidas.
Casos de teste
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=""
à definição de&
deve resolver isso. Me desculpe, eu não especificou isso mais explicitamente nas especificações, eu vou editá-lo no.