Powiedzmy, że mamy określony zestaw funkcji na ciągach. Funkcje te przypominają wypełnianie pustych pól lub madlibów, z tym wyjątkiem, że pobierają tylko jeden wkład i używają go do wypełnienia wszystkich swoich pustych pól. Na przykład możemy mieć funkcję, która wygląda
I went to the ____ store and bought ____ today.
Jeśli zastosujemy tę funkcję do łańcucha, cheese
wynikiem będzie:
I went to the cheese store and bought cheese today.
Możemy reprezentować te funkcje jako niepustą listę ciągów, gdzie puste miejsca są po prostu przerwami między ciągami. Na przykład nasza powyższa funkcja to:
["I went to the ", " store and bought ", " today."]
Dzięki tej reprezentacji istnieje tylko jedna reprezentacja dla każdej funkcji tego rodzaju i tylko jedna funkcja dla każdej reprezentacji.
Naprawdę fajne jest to, że zestaw takich funkcji jest zamknięty w ramach kompozycji. To znaczy, że składanie się z dwóch naszych funkcji jest zawsze kolejną z tych funkcji. Na przykład, jeśli skomponuję naszą funkcję powyżej
["blue ", ""]
(funkcja, która przechodzi blue
do wejścia) Otrzymujemy funkcję:
["I went to the blue ", " store and bought blue ", " today."]
Mogą się one jednak nieco bardziej skomplikować. Na przykład, jeśli skomponujemy pierwszą funkcję z
["big ", " and ", ""]
Wynik to
["I went to the big ", " and ", " store and bought big ", "and", " today."]
Zadanie
Twoim zadaniem jest przyjęcie dwóch funkcji opisanych jako niepuste listy ciągów i wygenerowanie ich składu jako niepustej listy ciągów.
Na potrzeby tego wyzwania listą może być dowolny uporządkowany kontener, który zezwala na duplikaty, a ciąg może być rodzimym typem ciągu, listą znaków lub listą liczb całkowitych.
To jest odpowiedź na golfa kodowanego w bajtach, przy czym mniej bajtów jest lepszych.
Przypadki testowe
["","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"]