Допустим, у нас есть определенный набор функций для строк. Эти функции похожи на заполнение пробелов или madlibs, за исключением того, что они принимают только один ввод и используют его для заполнения всех пробелов. Например, у нас может быть функция, которая выглядит как
I went to the ____ store and bought ____ today.
Если бы мы применили эту функцию к строке, cheese
результат был бы:
I went to the cheese store and bought cheese today.
Мы можем представить эти функции в виде непустого списка строк, где пробелы - это просто промежутки между строками. Например, наша функция выше будет:
["I went to the ", " store and bought ", " today."]
С этим представлением есть только одно представление для каждой функции такого рода и только одна функция для каждого представления.
По-настоящему изящно то, что множество таких функций замкнуто по композиции. То есть композиция двух наших функций всегда является другой из этих функций. Например, если я сочиню нашу функцию выше с
["blue ", ""]
(функция, которая предшествует blue
вводу) Мы получаем функцию:
["I went to the blue ", " store and bought blue ", " today."]
Это может быть немного сложнее, хотя. Например, если мы сочиняем первую функцию с
["big ", " and ", ""]
Результат
["I went to the big ", " and ", " store and bought big ", "and", " today."]
задача
Ваша задача - взять две функции, описанные как непустые списки строк, и вывести их композицию в виде непустого списка строк.
Для этой задачи список может быть любым упорядоченным контейнером, который допускает дублирование, а строка может быть собственным типом строки, списком символов или списком целых чисел.
Это код-гольф ответы будут оцениваться в байтах с меньшим количеством байтов, тем лучше.
Контрольные примеры
["","xy"] ["ab",""] -> ["ab","xy"]
["x","y","z"] ["a","b"] -> ["xa","bya","bz"]
["xy"] ["ab"] -> ["xy"]
["","",""] ["a",""] -> ["a","a",""]
["x",""] ["","",""] -> ["x","",""]
["x","y","z"] ["a","b","c"] -> ["xa","b","cya","b","cz"]
["x","x","x"] ["a"] -> ["xaxax"]
["w","x","y","z"] ["ab","cd","e"] -> ["wab","cd","exab","cd","eyab","cd","ez"]