Tutti adorano le liste nidificate! Tuttavia, a volte è difficile creare un elenco nidificato. Devi decidere se vuoi annidarlo più in profondità, o se devi annidarlo in profondità. Quindi, per la tua sfida, devi "Autonest" un elenco. Per autonestare un elenco, confronta ogni coppia di elementi nell'elenco.
Se il secondo elemento è più piccolo, separa i due elementi inserendo parentesi di chiusura e apertura tra loro, in questo modo:
} { {2 , 1}
Ad esempio,
{2, 1}
diventa{2}, {1}
e{3, 2, 1}
diventa{3}, {2}, {1}
Se il secondo elemento è lo stesso, non modificare nulla. Ad esempio,
{1, 1, 1}
rimane lo stesso e{2, 1, 1, 1}
diventerebbe{2}, {1, 1, 1}
.Se il secondo oggetto è più grande, nidifica ogni oggetto successivo di un livello più in profondità. Ad esempio,
{1, 2}
sarebbe diventato{1, {2}}
e{1, 2, 3}
sarebbe diventato{1, {2, {3}}}
La sfida
È necessario scrivere un programma o una funzione che accetta un elenco di numeri e restituisce lo stesso elenco dopo essere stato autonestato. Prendi questo input nel formato dell'elenco nativo delle tue lingue (o l'alternativa più vicina) o come stringa. Non devi usare le parentesi graffe come ho fatto nei miei esempi. Puoi utilizzare qualsiasi tipo di parentesi più naturale nella tua lingua, purché sia coerente. Puoi tranquillamente supporre che l'elenco conterrà solo numeri interi. Puoi anche supporre che l'elenco contenga almeno 2 numeri. Ecco alcuni esempi di IO:
{1, 3, 2} --> {1, {3}, {2}}
{1, 2, 3, 4, 5, 6} --> {1, {2, {3, {4, {5, {6}}}}}}
{6, 5, 4, 3, 2, 1} --> {6}, {5}, {4}, {3}, {2}, {1}
{7, 3, 3, 2, 6, 4} --> {7}, {3, 3}, {2, {6}, {4}}
{7, 3, 1, -8, 4, 8, 2, -9, 2, 8} --> {7}, {3}, {1}, {-8, {4, {8}, {2}, {-9, {2, {8}}}}}
Si applicano scappatoie standard e vince la risposta più breve in byte!
[-100, 100]
ma non ho intenzione di fornire input giganteschi.
{2, 1}
diventa {2}, {1}
" Com'è quel livello superiore ? Un livello superiore sarebbe {2}, 1
. Quello che hai è allo stesso livello.