Струни з контекстом
Для цілей цього виклику рядок з контекстом - це потрійний рядок, який називається лівим контекстом , частиною даних та правим контекстом . Він являє собою підрядку з більш тривалого рядка. Ми використовуємо вертикальну трубу |
як роздільник, тому приклад рядка з контекстом є cod|e-go|lf
, де лівий контекст cod
, дані є e-go
, а правий - контекст lf
. Цей приклад є підрядок e-go
з code-golf
.
Тепер, щоб з'єднати два рядки з контекстом, ми походимо наступним чином, використовуючи aa|bcc|dee
і cc|de|eee
як приклади. Вирівнюємо рядки, як на схемі
a a|b c c|d e e
c c|d e|e e e
щоб їх частини даних були суміжними. Частина даних конкатенації - це конкатенація частин даних, в цьому випадку bccde
. Лівий контекст - це частина, яка поширюється вліво від першої частини даних, в даному випадку aa
. Аналогічно правильний контекст є eee
, тому конкатенація - це рядок з контекстом aa|bccde|eee
. Для другого прикладу розглянемо a|bb|cd
та aabb|cd|
, де друге слово має порожній правильний контекст. Діаграма вирівнювання є
a|b b|c d
a a b b|c d|
де лівий контекст другого слова поширюється далі, ніж перший. Конкатенація є aa|bbcd|
.
Але зачекайте, є ось що: якщо літери діаграми вирівнювання не збігаються, конкатенація не існує! Як приклад, діаграма aa|bb|cc
і c|c|c
є
a a|b b|c c
c|c|c
де b
і c
на четвертому стовпці не погоджуються, тому їх не можна об'єднати.
Завдання
Ваше завдання - написати програму, яка складається з двох рядків з контекстом, частини яких розділені |
як вище, і виводить їх конкатенацію, якщо вона існує, і щось інше, якщо ні. "Щось інше" може мати будь-яке значення, включаючи відсутність виводу, доки це не дійсна рядок з контекстом, і воно однакове у всіх випадках. Однак помилка кидання не прийнятна. Ви можете надати або програму 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=""
до визначення&
слід вирішити це. Вибачте, що я не вказав це більш чітко в специфікаціях, я відредагую його.