Angenommen, wir haben einen bestimmten Satz von Funktionen für Zeichenfolgen. Diese Funktionen ähneln dem Ausfüllen von Leerzeichen oder Madlibs, mit der Ausnahme, dass sie nur eine Eingabe verwenden, um alle Leerzeichen auszufüllen. Zum Beispiel könnten wir eine Funktion haben, die so aussieht
I went to the ____ store and bought ____ today.
Wenn wir diese Funktion auf den String anwenden cheese
würden, wäre das Ergebnis:
I went to the cheese store and bought cheese today.
Wir können diese Funktionen als eine nicht leere Liste von Zeichenfolgen darstellen, wobei die Leerzeichen einfach die Lücken zwischen den Zeichenfolgen sind. Zum Beispiel wäre unsere obige Funktion:
["I went to the ", " store and bought ", " today."]
Bei dieser Darstellung gibt es für jede Funktion dieser Art nur eine Darstellung und für jede Darstellung nur eine Funktion.
Eine wirklich nette Sache ist, dass die Menge solcher Funktionen unter Komposition geschlossen ist. Das heißt, die Zusammensetzung von zwei unserer Funktionen ist immer eine dieser Funktionen. Zum Beispiel, wenn ich unsere obige Funktion mit komponiere
["blue ", ""]
(Die Funktion, blue
die der Eingabe vorangeht. ) Wir erhalten die Funktion:
["I went to the blue ", " store and bought blue ", " today."]
Diese können jedoch etwas komplexer werden. Zum Beispiel, wenn wir die erste Funktion mit komponieren
["big ", " and ", ""]
Das Ergebnis ist
["I went to the big ", " and ", " store and bought big ", "and", " today."]
Aufgabe
Ihre Aufgabe ist es, zwei Funktionen zu übernehmen, die als nicht leere Listen von Zeichenfolgen beschrieben werden, und deren Zusammensetzung als nicht leere Liste von Zeichenfolgen auszugeben.
Für diesen Zweck kann eine Liste ein beliebiger sortierter Container sein, der Duplikate zulässt, und eine Zeichenfolge kann ein systemeigener Zeichenfolgentyp, eine Liste von Zeichen oder eine Liste von ganzen Zahlen sein.
Dies ist Code-Golf- Antworten werden in Bytes bewertet, wobei weniger Bytes besser sind.
Testfälle
["","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"]