Herausforderung:
Geben Sie bei einer Liste nicht leerer Listen von Ganzzahlen eine Liste von Tupeln der folgenden Form zurück: Tupel der ersten Liste beginnen mit jedem Element der ersten Liste, gefolgt vom ersten Element jeder nachfolgenden Liste, daher sollte das i-te Tupel sein [ith element of first list, first element of second list, ... , first element of last list]
. Beispielsweise:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] => [[1, 4, 7], [2, 4, 7], [3, 4, 7], ...
Dann machen Sie Tupel der Form [last element of first list, ith element of second list, first element of third list, ..., first element of last list]
, also wäre dies in unserem Beispiel:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] => ..., [3, 4, 7], [3, 5, 7], [3, 6, 7], ...
Fahren Sie mit jeder verbleibenden Liste fort, bis Sie zu [last element of first list, ..., last element of second to last list, ith element of last list]
:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] => ..., [3, 6, 7], [3, 6, 8], [3, 6, 9]]
Die volle Ausgabe ist wie folgt:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] =>
[[1, 4, 7], [2, 4, 7], [3, 4, 7], [3, 5, 7], [3, 6, 7], [3, 6, 8], [3, 6, 9]]
Einige Boilerplate für ein gutes Maß:
- Wenn Sie möchten, dass die Eingabe Listen mit Zeichenfolgen oder Listen mit positiven Ganzzahlen enthält, ist dies in Ordnung. Die Frage betrifft das Manipulieren von Listen, nicht das, was in den Listen enthalten ist.
- Eingabe und Ausgabe können in jedem akzeptablen Format erfolgen .
- Es ist entweder ein vollständiges Programm oder eine vollständige Funktion zulässig.
- Standardlücken sind standardmäßig nicht zulässig.
- Diese Frage ist Code Golf, also gewinnt die niedrigste Bytezahl.
Beispiele:
[] => [[]] (or an error, thanks to ngn for correcting the output in this case)
[[1]] => [[1]]
[[1, 2], [3, 4], [5]] => [[1, 3, 5], [2, 3, 5], [2, 4, 5]]
[[1], [2], [5, 6], [3], [4]] => [[1, 2, 5, 3, 4], [1, 2, 6, 3, 4]]
[[1, 2, 3], [4, 5]] => [[1, 4], [2, 4], [3, 4], [3, 5]]
[[1, 2, 3], []] => unspecified behavior (can be an error)
[[3, 13, 6], [9, 2, 4], [5, 10, 8], [12, 1, 11], [7, 14]] =>
[[3, 9, 5, 12, 7], [13, 9, 5, 12, 7], [6, 9, 5, 12, 7], [6, 2, 5, 12, 7],
[6, 4, 5, 12, 7], [6, 4, 10, 12, 7], [6, 4, 8, 12, 7], [6, 4, 8, 1, 7],
[6, 4, 8, 11, 7], [6, 4, 8, 11, 14]]
[[16, 8, 4, 14, 6, 7, 10, 15], [11, 1, 12, 2, 19, 18, 9, 3], [13, 5, 17]] =>
[[16, 11, 13], [8, 11, 13], [4, 11, 13], [14, 11, 13], [6, 11, 13],
[7, 11, 13], [10, 11, 13], [15, 11, 13], [15, 1, 13], [15, 12, 13], [15, 2, 13],
[15, 19, 13], [15, 18, 13], [15, 9, 13], [15, 3, 13], [15, 3, 5], [15, 3, 17]]
Wenn jemand einen besseren Titel hat, lass es mich wissen.
[[]]
dass es ein einzelnes leeres Tupel mit einem Eintrag aus jeder der (Null-) Unterlisten gibt. Wahrscheinlich ist es zu ärgerlich, Programme zu benötigen, um dies korrekt auszugeben, also werde ich sagen, dass es nicht notwendig ist.
[]
ist streng genommen eine leere Liste nicht leerer Listen, aber die Ausgabe ist nicht eindeutig zwischen []
und [[]]
wenn es sich um eine zulässige Eingabe handelt. ("Tupel der ersten Liste beginnen mit jedem Element der ersten Liste ..." - es gibt keine erste Liste, also sind wir fertig -> []
)
[]
sein sollte [[]]
. Zum Beispiel ist die Anzahl der Ausgabetupel, sum(inner list lengths) - length of outer list + 1
die im leeren Fall ergibt 1
, die Länge von, [[]]
aber nicht die Länge von []
. Dies ist allerdings ein pedantisches Problem ...
[] => []
das eigentlich sein sollte[] => [[]]
, kann aber keine Worte finden, um zu erklären, warum.