Remarque: il s’agit du numéro 2 d’une série de défis liés à la manipulation de tableaux . Pour le défi précédent, cliquez ici .
Séparation des listes imbriquées
Pour séparer les valeurs d'une liste imbriquée, aplatissez-la, puis affichez chaque valeur de manière à ce qu'elle se trouve à la même profondeur imbriquée qu'auparavant.
C'est-à-dire cette liste:
[1, [2, 3], [4, 4, [5, 2], 1]]
Deviendrait:
[1, [2], [3], [4], [4], [[5]], [[2]], [1]]
Le défi
Votre tâche consiste à écrire un programme qui prend toute liste imbriquée d’entiers positifs (dans les limites de votre langue) et effectue cette opération de séparation.
Vous pouvez soumettre une fonction prenant la liste en argument, ou un programme complet effectuant des E / S.
Comme il s'agit de code-golf , la soumission la plus courte (en octets) gagne! *
* Les trous de golf standard sont interdits. Vous connaissez le refrain.
Cas de test
Les listes d’entrée ne contiendront jamais que des entiers de la taille d’entier standard de votre langue. Pour éviter les contraintes linguistiques empêchant leur concurrence, les valeurs ne seront pas imbriquées à des profondeurs supérieures à 10.
Vous pouvez supposer que l'entrée n'aura pas de sous-listes vides: par exemple - [[5, []]]
ne sera pas donnée. Cependant, la liste principale pourrait être vide.
[] -> []
[[1, 2]] -> [[1], [2]]
[3, [4, 5]] -> [3, [4], [5]]
[3, [3, [3]]] -> [3, [3], [[3]]]
[[6, [[7]]]] -> [[6], [[[7]]]]
[[5, 10], 11] -> [[5], [10], 11]
N'hésitez pas à laisser un commentaire si j'ai raté une affaire de coin.
Exemple
J'ai jeté ensemble une solution Python 3 rapide (ungolfed) comme un exemple - vous pouvez le tester sur repl.it .