Zeichenfolgen mit Kontext
Für diese Herausforderung ist eine Zeichenfolge mit Kontext ein Tripel von Zeichenfolgen, die als linker Kontext , Datenteil und rechter Kontext bezeichnet werden . Es repräsentiert eine Teilzeichenfolge einer längeren Zeichenfolge. Wir verwenden die vertikale Pipe |als Trennzeichen. Ein Beispiel für eine Zeichenfolge mit Kontext ist also cod|e-go|lf, wo sich der linke Kontext cod, die Daten e-gound der rechte Kontext befinden lf. Dieses Beispiel repräsentiert die Teilzeichenfolge e-govon code-golf.
Um nun zwei Zeichenfolgen mit dem Kontext zu verknüpfen, gehen wir wie folgt vor, wobei wir aa|bcc|deeund cc|de|eeeals Beispiele verwenden. Wir richten die Zeichenfolgen wie im Diagramm aus
a a|b c c|d e e
c c|d e|e e e
so dass ihre Datenteile benachbart sind. Der Datenteil der Verkettung ist in diesem Fall die Verkettung der Datenteile bccde. Der linke Kontext ist in diesem Fall der Teil, der sich weiter links vom ersten Datenteil erstreckt aa. Ebenso ist der richtige Kontext eee, also ist die Verkettung die Zeichenfolge mit dem Kontext aa|bccde|eee. Als zweites Beispiel betrachten Sie a|bb|cdund aabb|cd|, wobei das zweite Wort einen leeren rechten Kontext hat. Das Ausrichtungsdiagramm ist
a|b b|c d
a a b b|c d|
wobei sich der linke Kontext des zweiten Wortes weiter erstreckt als der des ersten. Die Verkettung ist aa|bbcd|.
Aber warte, es gibt ein Problem: Wenn die Buchstaben des Ausrichtungsdiagramms nicht übereinstimmen, existiert die Verkettung nicht! Als ein Beispiel der Schaltbild aa|bb|ccund c|c|cIS
a a|b b|c c
c|c|c
Wo die bund cin der vierten Spalte nicht übereinstimmen, können sie nicht verkettet werden.
Die Aufgabe
Ihre Aufgabe ist es, ein Programm zu schreiben, das zwei Zeichenfolgen mit Kontext enthält, deren Teile |wie oben voneinander getrennt sind , und deren Verkettung auszugeben, falls vorhanden, und etwas anderes, falls nicht. Das "etwas anderes" kann ein beliebiger Wert sein, einschließlich keiner Ausgabe, solange es sich nicht um eine gültige Zeichenfolge mit Kontext handelt und in allen Fällen dieselbe. Das Auslösen eines Fehlers ist jedoch nicht akzeptabel. Sie können entweder ein STDIN-zu-STDOUT-Programm oder eine Funktion angeben. Anonyme Funktionen werden ebenfalls akzeptiert. Die kleinste Byteanzahl gewinnt, und Standardlücken sind nicht zulässig.
Testfälle
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=""zur Definition von&sollte das lösen. Es tut mir leid, dass ich dies nicht expliziter in den Spezifikationen angegeben habe. Ich werde es in bearbeiten.