Desafío:
Dada una lista de listas no enteras de enteros, devuelva una lista de tuplas de la siguiente forma: Primera lista de tuplas que comienzan con cada elemento de la primera lista seguido del primer elemento de cada lista posterior, por lo que la i-ésima tupla debería ser [ith element of first list, first element of second list, ... , first element of last list]
. Por ejemplo:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] => [[1, 4, 7], [2, 4, 7], [3, 4, 7], ...
Luego haga tuplas de la forma [last element of first list, ith element of second list, first element of third list, ..., first element of last list]
, por lo que en nuestro ejemplo esto sería:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] => ..., [3, 4, 7], [3, 5, 7], [3, 6, 7], ...
Continúe con cada lista restante, hasta llegar 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]]
La salida completa es la siguiente:
[[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]]
Algunas repeticiones para una buena medida:
- Si desea que la entrada sea listas de cadenas o listas de enteros positivos, está bien. La pregunta es sobre manipular listas, no sobre lo que hay en las listas.
- La entrada y salida pueden estar en cualquier formato aceptable .
- Se permite un programa completo o una función.
- Las lagunas estándar no están permitidas por defecto.
- Esta pregunta es el código de golf, por lo que gana el conteo de bytes más bajo.
Ejemplos:
[] => [[]] (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]]
Si alguien tiene un mejor título, avíseme.
fuente
[] => []
debería ser,[] => [[]]
pero no puedo encontrar las palabras para explicar por qué.[[]]
porque hay una sola tupla vacía con una entrada de cada una de las sublistas (cero). Probablemente sea demasiado molesto requerir que los programas muestren correctamente esto, por lo que diré que no es necesario.[]
, estrictamente hablando, es una lista vacía de listas no vacías, pero la salida es ambigua entre[]
y[[]]
si es una entrada permitida. ("La primera lista de tuplas comienza con cada elemento de la primera lista ..." - no hay una primera lista, así que hemos terminado ->[]
)[]
debería ser[[]]
. Por ejemplo, el número de tuplas de salida es elsum(inner list lengths) - length of outer list + 1
que en el caso vacío da1
, que es la longitud[[]]
pero no la longitud de[]
. Sin embargo, este es un problema pedante ...