Cadenas con contexto
Para los propósitos de este desafío, una cadena con contexto es un triple de cadenas, llamada contexto izquierdo , parte de datos y contexto derecho . Representa una subcadena de una cadena más larga. Usamos la tubería vertical |
como separador, por lo que un ejemplo de una cadena con contexto es cod|e-go|lf
, donde está el contexto izquierdo cod
, los datos e-go
y el contexto correcto lf
. Este ejemplo representa la subcadena e-go
de code-golf
.
Ahora, para concatenar dos cadenas con contexto, procedemos de la siguiente manera, usando aa|bcc|dee
y cc|de|eee
como ejemplos. Alineamos las cuerdas como en el diagrama.
a a|b c c|d e e
c c|d e|e e e
para que sus partes de datos sean adyacentes. La parte de datos de la concatenación es la concatenación de las partes de datos, en este caso bccde
. El contexto de la izquierda es la parte que extiende los elementos hacia la izquierda de la primera parte de datos, en este caso aa
. Del mismo modo, el contexto correcto es eee
, por lo que la concatenación es la cadena con contexto aa|bccde|eee
. Para un segundo ejemplo, considere a|bb|cd
y aabb|cd|
, donde la segunda palabra tiene un contexto derecho vacío. El diagrama de alineación es
a|b b|c d
a a b b|c d|
donde el contexto izquierdo de la segunda palabra se extiende más allá del de la primera. La concatenación es aa|bbcd|
.
Pero espera, hay un problema: si las letras del diagrama de alineación no coinciden, ¡la concatenación no existe! Como ejemplo, el diagrama de aa|bb|cc
y c|c|c
es
a a|b b|c c
c|c|c
donde la b
y c
en la cuarta columna no están de acuerdo, por lo que no se pueden concatenar.
La tarea
Su trabajo consiste en escribir un programa que tome dos cadenas con contexto cuyas partes estén separadas por |
lo anterior, y genere su concatenación si existe, y algo más si no. El "algo más" puede ser cualquier valor, sin salida, siempre que no sea una cadena válida con contexto y sea igual en todos los casos. Sin embargo, arrojar un error no es aceptable. Puede asignar un programa STDIN a STDOUT o una función, y también se aceptan funciones anónimas. El conteo de bytes más pequeño gana, y las lagunas estándar no se permiten.
Casos de prueba
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=""
a la definición de&
debería resolver eso. Lo siento, no especifiqué esto más explícitamente en las especificaciones, lo