Verschachtelte Sequenzen repräsentieren ein willkürliches Zusammenführen einer Anzahl von Sequenzen.
Eine verschachtelte Sequenz kann durch Anhängen von Elementen an eine Liste nacheinander aus einer bestimmten Anzahl von Listen erstellt werden, wobei jedes Mal das nächste Element aus einer bestimmten Liste ausgewählt wird. Daher enthält eine verschachtelte Sequenz genau die gleichen Elemente aller kombinierten Listen in einer Reihenfolge, die mit allen Listen übereinstimmt.
Die einzige Verschachtelung von 1 Liste ist dieselbe Liste.
Herausforderung
Ihre Herausforderung besteht darin, eine Funktion / ein Programm zu erstellen, das eine beliebige Anzahl von Sequenzen annimmt und alle möglichen Verschachtelungen dieser Sequenzen ausgibt.
Beispiele
Input: [1, 2], [3, 4]
Output:
[1, 2, 3, 4]
[1, 3, 2, 4]
[1, 3, 4, 2]
[3, 1, 2, 4]
[3, 1, 4, 2]
[3, 4, 1, 2]
Input: [1, 2, 3, 4, 5]
Output:
[1, 2, 3, 4, 5]
Input: []
Output:
[]
Input: <nothing>
Output:
[]
(also acceptable)
Input: <nothing>
Output: <nothing>
Input: [1, 2, 3], [4, 5]
Output:
[1, 2, 3, 4, 5]
[1, 2, 4, 3, 5]
[1, 2, 4, 5, 3]
[1, 4, 2, 3, 5]
[1, 4, 2, 5, 3]
[1, 4, 5, 2, 3]
[4, 1, 2, 3, 5]
[4, 1, 2, 5, 3]
[4, 1, 5, 2, 3]
[4, 5, 1, 2, 3]
Input: [1, 2], [3, 4], [5, 6]
Output:
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 5, 4, 6]
[1, 2, 3, 5, 6, 4]
[1, 2, 5, 3, 4, 6]
[1, 2, 5, 3, 6, 4]
[1, 2, 5, 6, 3, 4]
[1, 3, 2, 4, 5, 6]
[1, 3, 2, 5, 4, 6]
[1, 3, 2, 5, 6, 4]
[1, 3, 4, 2, 5, 6]
[1, 3, 4, 5, 2, 6]
[1, 3, 4, 5, 6, 2]
[1, 3, 5, 2, 4, 6]
[1, 3, 5, 2, 6, 4]
[1, 3, 5, 4, 2, 6]
[1, 3, 5, 4, 6, 2]
[1, 3, 5, 6, 2, 4]
[1, 3, 5, 6, 4, 2]
[1, 5, 2, 3, 4, 6]
[1, 5, 2, 3, 6, 4]
[1, 5, 2, 6, 3, 4]
[1, 5, 3, 2, 4, 6]
[1, 5, 3, 2, 6, 4]
[1, 5, 3, 4, 2, 6]
[1, 5, 3, 4, 6, 2]
[1, 5, 3, 6, 2, 4]
[1, 5, 3, 6, 4, 2]
[1, 5, 6, 2, 3, 4]
[1, 5, 6, 3, 2, 4]
[1, 5, 6, 3, 4, 2]
[3, 1, 2, 4, 5, 6]
[3, 1, 2, 5, 4, 6]
[3, 1, 2, 5, 6, 4]
[3, 1, 4, 2, 5, 6]
[3, 1, 4, 5, 2, 6]
[3, 1, 4, 5, 6, 2]
[3, 1, 5, 2, 4, 6]
[3, 1, 5, 2, 6, 4]
[3, 1, 5, 4, 2, 6]
[3, 1, 5, 4, 6, 2]
[3, 1, 5, 6, 2, 4]
[3, 1, 5, 6, 4, 2]
[3, 4, 1, 2, 5, 6]
[3, 4, 1, 5, 2, 6]
[3, 4, 1, 5, 6, 2]
[3, 4, 5, 1, 2, 6]
[3, 4, 5, 1, 6, 2]
[3, 4, 5, 6, 1, 2]
[3, 5, 1, 2, 4, 6]
[3, 5, 1, 2, 6, 4]
[3, 5, 1, 4, 2, 6]
[3, 5, 1, 4, 6, 2]
[3, 5, 1, 6, 2, 4]
[3, 5, 1, 6, 4, 2]
[3, 5, 4, 1, 2, 6]
[3, 5, 4, 1, 6, 2]
[3, 5, 4, 6, 1, 2]
[3, 5, 6, 1, 2, 4]
[3, 5, 6, 1, 4, 2]
[3, 5, 6, 4, 1, 2]
[5, 1, 2, 3, 4, 6]
[5, 1, 2, 3, 6, 4]
[5, 1, 2, 6, 3, 4]
[5, 1, 3, 2, 4, 6]
[5, 1, 3, 2, 6, 4]
[5, 1, 3, 4, 2, 6]
[5, 1, 3, 4, 6, 2]
[5, 1, 3, 6, 2, 4]
[5, 1, 3, 6, 4, 2]
[5, 1, 6, 2, 3, 4]
[5, 1, 6, 3, 2, 4]
[5, 1, 6, 3, 4, 2]
[5, 3, 1, 2, 4, 6]
[5, 3, 1, 2, 6, 4]
[5, 3, 1, 4, 2, 6]
[5, 3, 1, 4, 6, 2]
[5, 3, 1, 6, 2, 4]
[5, 3, 1, 6, 4, 2]
[5, 3, 4, 1, 2, 6]
[5, 3, 4, 1, 6, 2]
[5, 3, 4, 6, 1, 2]
[5, 3, 6, 1, 2, 4]
[5, 3, 6, 1, 4, 2]
[5, 3, 6, 4, 1, 2]
[5, 6, 1, 2, 3, 4]
[5, 6, 1, 3, 2, 4]
[5, 6, 1, 3, 4, 2]
[5, 6, 3, 1, 2, 4]
[5, 6, 3, 1, 4, 2]
[5, 6, 3, 4, 1, 2]
Regeln
- Standardlücken verboten (duh)
- Die Eingabe kann in jedem vernünftigen Format erfolgen, z. B. als Liste von Listen, Vararg-Liste von Listen, Parameterlisten usw., sofern eindeutig festgelegt ist, wo Listen beginnen und enden.
- Die Ausgabe kann in jedem vernünftigen Format erfolgen, sofern klar ist, wo Listen beginnen und enden. Gültige Ausgaben sind unter anderem:
- stdout mit einer Liste pro Zeile
- Eine Liste von Listen
- Ein Iterator über Listen (kann mit einem Generator implementiert werden, wenn Ihre Sprache sie hat)
- Die Reihenfolge der erhaltenen Verschachtelungen spielt keine Rolle, es sollten jedoch keine wiederholten Verschachtelungen auftreten.
- Um die Wiederholungserkennung zu vereinfachen, können Sie davon ausgehen, dass alle Elemente in allen Eingabesequenzen eindeutig sind.
- Wenn keine Listen als Eingabe angegeben werden, sind sowohl die leere Liste als auch keine Ausgabe gültige Ausgaben.
- Die Typen der Elemente in den Sequenzen sind irrelevant. (ZB können sie alle ein Typ oder ein Mischmasch von Typen sein, je nachdem, was in Ihrer Sprache praktischer ist.)
- Es muss garantiert sein, dass Ihr Programm / Ihre Funktion auf unbestimmte Zeit endet.
- Das ist Code-Golf , also gewinnt der kürzeste Code für jede Sprache.
[[]]anstatt[]dass wir keine Listen als Eingabe erhalten?