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-goe o contexto correto lf. Este exemplo representa a substring e-gode code-golf.
Agora, para concatenar duas seqüências de caracteres com o contexto, procedemos da seguinte maneira, usando aa|bcc|deee cc|de|eeecomo 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|cde 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|cce c|c|cé
a a|b b|c c
c|c|c
onde be cna 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.