Ogni programmatore sa che le parentesi []{}()<>
sono davvero divertenti. Per esasperare questo divertimento, i gruppi di parentesi intrecciate possono essere trasformati in diagrammi carini e sfocati.
Diciamo che hai una stringa che contiene parentesi bilanciate, come [{][<(]})>(())
. Il primo passo è ruotare la corda di 45 gradi in senso orario. (In Mathematica, questo può essere quasi fatto Rotate[ur_string,-pi/4]
). Ecco il risultato del primo passo:
[
{
]
[
<
(
]
}
)
>
(
(
)
)
Quindi aggiungi uno spazio diagonale tra ogni personaggio.
[
{
]
[
<
(
]
}
)
>
(
(
)
)
Successivamente, inizia con la parentesi più a sinistra e traccia un quadrato tra esso e il suo partner nel crimine.
+---+
| |
| { |
| |
+---+
[
<
(
]
}
)
>
(
(
)
)
Ripetere questo processo con ciascuna coppia di parentesi, sovrascrivendo i caratteri precedenti con +
s, se necessario.
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| [ |
| |
| < |
| |
| ( |
| |
| ] |
| |
+-----------+
)
>
(
(
)
)
Continua fino a quando non hai reso tutto bello e quadrato.
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| +-----+ |
| | | |
| | +---+-+---+
| | | | | |
| | | +-+-+-+ |
| | | | | | | |
| +-+-+-+ | | |
| | | | | |
+-----+-+---+ | |
| | | |
| +-----+ |
| |
+---------+
+-----+
| |
| +-+ |
| | | |
| +-+ |
| |
+-----+
Ingresso
L'input sarà una singola riga di parentesi bilanciate e nessun altro carattere, con ciascuna parentesi tra le due []{}()<>
. Ogni tipo di parentesi è bilanciata individualmente, anche se tipi diversi possono sovrapporsi (questo è ciò che rende i quadrati interessanti). Una nuova riga finale è facoltativa.
Produzione
L'output sarà il modello quadrato ad incastro generato dalla stringa di parentesi. Gli spazi finali e la nuova riga finale sono facoltativi, ma non devono esserci spazi bianchi iniziali.
Obbiettivo
Questo è code-golf, vince meno byte.
[[]]
possiamo produrre due quadrati sovrapposti o dobbiamo produrre un quadrato all'interno dell'altro?