Défi:
Étant donné une liste de listes d'entiers non vides, renvoyez une liste de tuples de la forme suivante: Première liste de tuples commençant par chaque élément de la première liste suivi du premier élément de chaque liste suivante, donc le ième tuple devrait être [ith element of first list, first element of second list, ... , first element of last list]
. Par exemple:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] => [[1, 4, 7], [2, 4, 7], [3, 4, 7], ...
Ensuite, faites des tuples du formulaire [last element of first list, ith element of second list, first element of third list, ..., first element of last list]
, donc dans notre exemple, ce serait:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] => ..., [3, 4, 7], [3, 5, 7], [3, 6, 7], ...
Continuez avec chaque liste restante, jusqu'à ce que vous arriviez à [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 sortie complète est la suivante:
[[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]]
Certains passe-partout pour faire bonne mesure:
- Si vous voulez que l'entrée soit des listes de chaînes ou des listes d'entiers positifs, ça va. La question porte sur la manipulation des listes, pas sur le contenu des listes.
- L'entrée et la sortie peuvent être dans n'importe quel format acceptable .
- Un programme ou une fonction complète est autorisé.
- Les failles standard sont interdites par défaut.
- Cette question est le golf de code, donc le nombre d'octets le plus bas l'emporte.
Exemples:
[] => [[]] (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 quelqu'un a un meilleur titre, faites le moi savoir.
[[]]
dû au fait qu'il y a un seul tuple vide avec une entrée de chacune des (zéro) sous-listes. Il est probablement trop ennuyeux d'exiger que des programmes émettent correctement ceci, donc je dirai que ce n'est pas nécessaire.
[]
est, à proprement parler, une liste vide de listes non vides mais la sortie est ambiguë entre []
et [[]]
si c'est une entrée autorisée. ("Première liste de tuples commençant par chaque élément de la première liste ..." - il n'y a pas de première liste, nous avons donc terminé -> []
)
[]
devrait l'être [[]]
. Par exemple, le nombre de tuples de sortie est celui sum(inner list lengths) - length of outer list + 1
qui dans le cas vide donne 1
, qui est la longueur de [[]]
mais pas la longueur de []
. C'est un peu un problème pédant cependant ...
[] => []
devrait vraiment l'être[] => [[]]
mais je ne trouve pas les mots pour expliquer pourquoi.