Sfida:
Dato un elenco di elenchi di numeri interi non vuoti, restituisce un elenco di tuple del seguente modulo: Tuple del primo elenco che iniziano con ciascun elemento del primo elenco seguito dal primo elemento di ogni elenco successivo, quindi dovrebbe essere la prima tupla [ith element of first list, first element of second list, ... , first element of last list]
. Per esempio:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] => [[1, 4, 7], [2, 4, 7], [3, 4, 7], ...
Quindi fai tuple del modulo [last element of first list, ith element of second list, first element of third list, ..., first element of last list]
, quindi nel nostro esempio questo sarebbe:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] => ..., [3, 4, 7], [3, 5, 7], [3, 6, 7], ...
Continua con tutti gli altri elenchi rimanenti, fino ad arrivare a [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]]
L'output completo è il seguente:
[[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]]
Qualche piastra di caldaia per una buona misura:
- Se vuoi che l'input sia un elenco di stringhe o un elenco di numeri interi positivi, va bene. La domanda riguarda la manipolazione degli elenchi, non ciò che è presente negli elenchi.
- L'input e l'output possono essere in qualsiasi formato accettabile .
- È consentito un programma o una funzione completi.
- Le scappatoie standard non sono consentite per impostazione predefinita.
- Questa domanda è il golf del codice, quindi vince il conteggio dei byte più basso.
Esempi:
[] => [[]] (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]]
Se qualcuno ha un titolo migliore, fammi sapere.
[[]]
perché esiste una sola tupla vuota con una voce da ciascuna delle liste (zero). Probabilmente è troppo fastidioso richiedere ai programmi di emetterlo correttamente, quindi dirò che non è necessario.
[]
è, a rigor di termini, un elenco vuoto di elenchi non vuoti ma l'output è ambiguo tra []
e [[]]
se è un input consentito. ("Tuple della prima lista che iniziano con ogni elemento della prima lista ..." - non esiste una prima lista, quindi abbiamo finito -> []
)
[]
dovrebbe essere [[]]
. Ad esempio, il numero di tuple di output è quello sum(inner list lengths) - length of outer list + 1
che nel caso vuoto indica 1
, che è la lunghezza [[]]
ma non la lunghezza di []
. Questo è un po 'un problema pedante però ...
[] => []
dovrebbe essere davvero[] => [[]]
ma non riesco a trovare le parole per spiegare il perché.