Data una stringa che è potenzialmente inscatolata, attiva o disattiva la casella. Ciò diventa più chiaro nei casi di test e nella spiegazione.
Input Output
Formato di input
L'input sarà una singola stringa separata da CR, LF o CRLF o un elenco di stringhe. Decidi tu il formato di input.
Formato di output
Il formato di output deve essere nello stesso formato dell'input.
Spiegazione + Esempio
Prendiamo una stringa inscatolata come esempio:
+-------------+
|Hello, World!|
+-------------+
Per attivare / disattivare la casella, rimuoviamo la prima e l'ultima riga e la prima e l'ultima colonna. Si può presumere che non ci saranno spazi vuoti finali dopo l'ultima riga (con una nuova riga finale facoltativa alla fine dell'ultima riga) e nessun spazio vuoto finale su qualsiasi riga, senza contare ovviamente la nuova riga.
Questo sarebbe diventato:
Hello, World!
L'altro modo
Se la stringa non si trova in una casella, aggiungere una casella ad essa. Questo è abbastanza semplice; anteporre +---...---+sulla propria riga con ktrattini in cui si ktrova la lunghezza della linea più lunga, quindi per ogni riga, riempirlo con uno spazio bianco finale per abbinare la lunghezza della linea più lunga, quindi anteporre e aggiungere un carattere pipe ( "|"). Infine, aggiungi una riga contenente la stessa +---...---+configurazione della prima riga.
Per esempio:
Hello, World!
diventa:
+-------------+
|Hello, World!|
+-------------+
Si può presumere che nessuna delle righe nell'input avrà spazi vuoti finali.
Un altro esempio di stringa che dovrebbe contenere una casella:
Hello,
World!
diventa
+----------+
|Hello, |
| World!|
+----------+
Un esempio di qualcosa che dovrebbe essere ancora inscatolato:
+--------+
| |
--------+
diventa:
+----------+
|+--------+|
|| ||
| --------+|
+----------+
Regole + specifiche
- Si applicano scappatoie standard
- Nessuna riga di input avrà spazi bianchi iniziali o finali sia in generale che in ciascuna riga, indipendentemente dal fatto che sia stata o meno inscatolata
- Le scatole avranno solo
+come angoli e|per i bordi verticali e-per i lati orizzontali. - Una scatola deve avere i suoi vantaggi in atto per essere considerata una scatola; se ha l'altezza o la larghezza 2 (ovvero, nessun contenuto), dovrebbe comunque essere deselezionato, il che comporterebbe un sacco di nuove righe, a seconda dell'altezza della casella.
- Se l'input ha una casella ma un testo esterno alla casella, l'intera cosa dovrebbe essere inscatolata.
- Il tuo programma deve controllare l'intero perimetro della stringa. Se un singolo personaggio lungo l'esterno non è corretto (mancante o diverso da quello che dovrebbe essere), allora dovrebbe essere inscatolato, non deselezionato.
- La stessa stringa senza scatola può contenere
+ | -. Se la stringa unboxed stessa contiene una casella attorno, restituisce la stringa con la casella; dovrebbe essere decompresso solo una volta.
Custodie per bordi
1: piccole scatole
Ingresso:
++
++
L'output è vuoto o newline
Ingresso:
+----+
+----+
L'output è vuoto o una nuova riga
Ingresso:
++
||
||
++
L'output è di 2 righe o 3 righe
2: scatola parziale
Ingresso:
+-------+
| Hello |
+ ------+
Produzione:
+---------+
|+-------+|
|| Hello ||
|+ ------+|
+---------+
3: testo esterno alla casella
Ingresso:
+-------+
a| Hello |
+-------+
Produzione:
+----------+
| +-------+|
|a| Hello ||
| +-------+|
+----------+