Dada uma sequência potencialmente encaixotada, alterne a caixa. Isso fica mais claro nos casos de teste e explicação.
Entrada / Saída
Formato de entrada
A entrada será uma única sequência separada por CR, LF ou CRLF ou uma lista de sequências. Você decide o formato de entrada.
Formato de saída
O formato de saída deve estar no mesmo formato que a entrada.
Explicação + Exemplo
Vamos pegar uma string em caixa como um exemplo:
+-------------+
|Hello, World!|
+-------------+
Para alternar a caixa, removemos a primeira e a última linha e a primeira e a última coluna. Você pode assumir que não haverá espaço em branco à direita após a última linha (com uma nova linha à direita opcional no final da última linha) e nenhum espaço em branco à direita em nenhuma linha, sem contar a nova linha, é claro.
Isso se tornaria:
Hello, World!
O outro jeito
Se a sequência não estiver em uma caixa, adicione uma caixa a ela. Isso é bastante simples; faça um prefixo +---...---+
em sua própria linha com k
traços onde k
está o comprimento da linha mais longa e, em seguida, para cada linha, preencha-o com espaço em branco à direita para corresponder ao comprimento da linha mais longa e, em seguida, adicione e acrescente um caractere de barra vertical ( "|"
). Por fim, acrescente uma linha contendo a mesma +---...---+
configuração da primeira linha.
Por exemplo:
Hello, World!
torna-se:
+-------------+
|Hello, World!|
+-------------+
Você pode assumir que nenhuma das linhas na entrada terá espaços em branco à direita.
Outro exemplo de uma string que deve ter uma caixa colocada ao seu redor:
Hello,
World!
torna-se
+----------+
|Hello, |
| World!|
+----------+
Um exemplo de algo que ainda deve estar em caixa:
+--------+
| |
--------+
torna-se:
+----------+
|+--------+|
|| ||
| --------+|
+----------+
Regras + Especificações
- As brechas padrão se aplicam
- Nenhuma linha de entrada terá espaços em branco à esquerda ou à direita, em geral e em cada linha, independentemente de ter sido encaixotada
- As caixas terão apenas
+
cantos,|
bordas verticais e-
horizontais. - Uma caixa deve ter suas vantagens no lugar para ser considerada uma caixa; se tiver altura ou largura 2 (ou seja, sem conteúdo), ainda deverá estar fora da caixa, o que resultaria em várias linhas de nova linha, dependendo da altura da caixa.
- Se a entrada tiver uma caixa, mas o texto estiver fora da caixa, a coisa toda deve ser encaixotada.
- Seu programa deve verificar todo o perímetro da sequência. Se um único caractere do lado de fora não estiver correto (ausente ou com um caractere diferente do que deveria ser), ele deve estar na caixa, não na caixa.
- A própria sequência sem caixa pode conter
+ | -
. Se a própria string sem caixa tiver uma caixa ao redor, retorne a string com a caixa; ele deve ser retirado da caixa de seleção apenas uma vez.
Casos Edge
1: caixas pequenas
Entrada:
++
++
A saída é uma linha vazia ou uma nova linha
Entrada:
+----+
+----+
A saída está vazia ou uma nova linha
Entrada:
++
||
||
++
A saída é de 2 novas linhas ou 3 novas linhas
2: Caixa Parcial
Entrada:
+-------+
| Hello |
+ ------+
Resultado:
+---------+
|+-------+|
|| Hello ||
|+ ------+|
+---------+
3: Texto fora da caixa
Entrada:
+-------+
a| Hello |
+-------+
Resultado:
+----------+
| +-------+|
|a| Hello ||
| +-------+|
+----------+