Considera una stringa non vuota di parentesi correttamente bilanciate:
(()(()())()((())))(())
Possiamo immaginare che ogni coppia di parentesi rappresenti un anello in una costruzione telescopica crollata . Quindi estendiamo il telescopio:
( )( )
()( )()( ) ()
()() ( )
()
Un altro modo di vederlo è che le parentesi alla profondità n vengono spostate sulla linea n , mantenendo la loro posizione orizzontale.
Il tuo compito è prendere una tale stringa di parentesi bilanciate e produrre la versione estesa.
È possibile scrivere un programma o una funzione, prendendo input tramite STDIN (o l'equivalente più vicino), argomento della riga di comando o parametro di funzione e producendo output tramite STDOUT (o equivalente più vicino), valore di ritorno o parametro di funzione (out).
Si può presumere che la stringa di input sia valida, ovvero sia composta solo da parentesi, che sono correttamente bilanciate.
È possibile stampare spazi finali su ciascuna riga, ma non più spazi iniziali del necessario. In totale le linee non devono essere più lunghe del doppio della lunghezza della stringa di input. Se lo si desidera, è possibile stampare una nuova riga finale.
Esempi
Oltre all'esempio sopra, qui ci sono alcuni altri casi di test (input e output sono separati da una riga vuota).
()
()
(((())))
( )
( )
( )
()
()(())((()))(())()
()( )( )( )()
() ( ) ()
()
((()())()(()(())()))
( )
( )()( )
()() ()( )()
()
Sfide correlate:
- Stringhe topografiche , che ti chiedono di produrre ciò che è essenzialmente il complemento del risultato in questa sfida.
- Code Explanation Formatter , un'ampia generalizzazione delle idee in questa sfida, pubblicata di recente da PhiNotPi. (In effetti, la descrizione originale di PhiNotPi della sua idea era ciò che ha ispirato questa sfida.)
Classifiche
Eh, questo ha ottenuto molta partecipazione, quindi ecco uno snippet di stack per generare sia una classifica regolare che una panoramica dei vincitori per lingua.
Per assicurarti che la tua risposta venga visualizzata, ti preghiamo di iniziare la risposta con un titolo, utilizzando il seguente modello Markdown:
# Language Name, N bytes
dov'è N
la dimensione del tuo invio. Se si migliora il punteggio, è possibile mantenere i vecchi punteggi nel titolo, colpendoli. Per esempio:
# Ruby, <s>104</s> <s>101</s> 96 bytes