On vous donne un arbre qui, dans la tradition informatique, a la racine en haut et les feuilles en bas. Les nœuds foliaires sont étiquetés avec des nombres. Votre objectif est de prendre la feuille spéciale marquée -1
et de la déplacer pour devenir la nouvelle racine.
[3, [[16], -1], [4]] --> [[[[4], 3], [16]]]
Vous pouvez imaginer faire tourner la feuille spéciale vers le haut et laisser le reste de l'arbre en suspendre. Garder l'arbre dans le plan tout en le faisant tourner pour obtenir l'ordre correct de gauche à droite de toutes les branches.
Le nouvel arbre a toutes les feuilles de l'arbre d'origine à l'exception de -1
.
Contribution:
Un arbre dont les feuilles sont des entiers positifs distincts, à l'exception d'une feuille de -1
. La racine de l'arbre aura au moins deux branches qui se détacheront.
L'entrée est donnée sous la forme d'une liste imbriquée [3, [[16], -1], [[4]]]
ou de sa représentation sous forme de chaîne. Les délimiteurs sont facultatifs et dépendent de vous, mais les numéros adjacents doivent être séparés.
Production:
Sortez ou imprimez l'arborescence inversée dans le même format que votre entrée. L'ordre des entrées de la liste doit être correct. La modification sur place est très bien.
Si votre entrée / sortie est un type de données, ce doit être celui qui imprime par défaut au format requis. Les éléments intégrés qui font essentiellement la tâche pour vous ne sont pas autorisés.
Cas de test:
>> [3, [[16], -1], [4]]
[[[[4], 3], [16]]]
>> [2, -1]
[[2]]
>> [44, -1, 12]
[[12, 44]]
>> [[[[-1]]], [[[[4]]]]]
[[[[[[[[[4]]]]]]]]]
>> [[1, 2, 3], [4, -1, 6], [7, 8, 9]]
[[6, [[7, 8, 9], [1, 2, 3]], 4]]
>> [9, [8, [7, [6, -1, 4], 3], 2], 1]
[[4, [3, [2, [1, 9], 8], 7], 6]]
4
a deux supports supplémentaires autour de lui3
, mais n'est représenté que 1 couche plus profondément.Réponses:
CJam,
242422 octetsEssayez-le en ligne .
Merci Dennis d'avoir supprimé 2 octets.
Explication
la source
{s$}$
, avec l'ordre de tri inversé. En outre, une fonction anonyme permettrait d'économiser un octet sur un programme complet.[
.Pyth,
26252423 octetsManifestation. Harnais de test.
Ceci définit une fonction,
y
qui prend en entrée une liste Pyth imbriquée.Il y a trois cas à explorer dans cette fonction récursive, en raison du ternaire,
?
et l'essai - sauf fonction.x
. Dans la fonction, l'entrée estb
.Le premier cas se produit quand
}\-`Jtb
est véridique. Ceci teste s'il y a une-
représentation de chaîne danstb
, la "queue" deb
, qui est toutb
sauf son premier élément.tb
est également stocké dansJ
. Puisque toutes les étiquettes sont positives à l'exception de-1
, cela sera vrai si et seulement si le-1
n'est pas dans le premier élément de la liste.Dans ce cas, nous décalons cycliquement vers la droite
b
de 1 avec.>b1
, puis appelons la fonction récursivement. Cela garantit que nous passerons à l'étape suivante avec l'élément contenant-1
comme tête (premier élément) de la liste.Dans les deux cas suivants, ce qui précède est faux, il en
-1
est de même en tête de liste.Dans le second cas,
ahbJ
ne renvoie pas d'erreur. Une erreur sera levée si et seulement sihb
est un entier. Si ce n'est pas le cas, alorshb
c'est une liste, et nous devons faire pivoter l'arbre afin que la-1
feuille soit plus proche de la racine.ahbJ
accomplit cela en ajoutantJ
un seul élément à la fin dehb
, ce qui déplace efficacement la racine de l'arbre deb
àhb
.Dans le troisième et dernier cas, une erreur est levée. Ainsi,
hb
est un élément unique. En raison du test dans le premier cas,hb
doit être-1
. Ainsi, nous pouvons retourner le reste deb
, à savoirJ
, enveloppé dans une liste, à savoir]J
.la source