Biorąc pod uwagę ciąg, który jest potencjalnie zapakowany, przełącz pole. Staje się to wyraźniejsze w przypadkach testowych i wyjaśnieniach.
Wejście wyjście
Format wejściowy
Dane wejściowe będą albo pojedynczym ciągiem oddzielonym CR, LF lub CRLF, albo listą ciągów. Format wejściowy zależy od Ciebie.
Format wyjściowy
Format wyjściowy musi być taki sam jak format wejściowy.
Wyjaśnienie + przykład
Weźmy jako przykład ciąg w pudełku:
+-------------+
|Hello, World!|
+-------------+
Aby przełączyć pole, usuwamy pierwszy i ostatni wiersz oraz pierwszą i ostatnią kolumnę. Możesz założyć, że po ostatnim wierszu nie będzie końcowych białych znaków (z opcjonalnym końcowym znakiem nowej linii na końcu ostatniego wiersza) i że nie będzie żadnych białych znaków końcowych w żadnym wierszu, oczywiście nie licząc nowego wiersza.
Stałoby się to:
Hello, World!
Inna droga
Jeśli ciąg nie znajduje się w polu, dodaj do niego pole. To jest dość proste; dodawaj +---...---+do własnej linii z kmyślnikami, gdzie kjest długość najdłuższej linii, a następnie dla każdej linii, dopełniaj ją końcowymi spacjami, aby pasowała do długości najdłuższej linii, a następnie dodawaj i dołączaj znak potoku ( "|"). Na koniec dodaj wiersz zawierający tę samą +---...---+konfigurację co pierwszy wiersz.
Na przykład:
Hello, World!
staje się:
+-------------+
|Hello, World!|
+-------------+
Możesz założyć, że żadna z linii wejściowych nie będzie miała spacji końcowych.
Kolejny przykład ciągu, który powinien zawierać pole:
Hello,
World!
staje się
+----------+
|Hello, |
| World!|
+----------+
Przykład czegoś, co wciąż powinno być zapakowane:
+--------+
| |
--------+
staje się:
+----------+
|+--------+|
|| ||
| --------+|
+----------+
Zasady + specyfikacje
- Obowiązują standardowe luki
- Żaden wiersz danych wejściowych nie będzie zawierał początkowych ani końcowych białych znaków zarówno ogólnie, jak i w każdym wierszu, niezależnie od tego, czy został wstawiony
- Pudełka będą miały tylko
+rogi i|krawędzie pionowe oraz-boki poziome. - Pudełko musi mieć swoje plusy, aby mogło być uważane za pudełko; jeśli ma wysokość lub szerokość 2 (to znaczy bez zawartości), nadal powinien być rozpakowany, co spowoduje powstanie wiązki nowych linii, w zależności od wysokości pudełka.
- Jeśli wejście zawiera pole, ale tekst poza polem, całość powinna być zapakowana.
- Twój program musi sprawdzić cały obwód łańcucha. Jeśli pojedynczy znak na zewnątrz jest niepoprawny (brakujący lub inny znak niż powinien), należy go zapakować, a nie rozpakować.
- Sam rozpakowany ciąg może zawierać
+ | -. Jeśli sam rozpakowany ciąg ma wokół siebie pudełko, zwróć ciąg wraz z pudełkiem; należy go rozpakować tylko raz.
Edge Cases
1: Małe pudełka
Wejście:
++
++
Dane wyjściowe to pusty lub nowy wiersz
Wejście:
+----+
+----+
Dane wyjściowe są puste lub nowy wiersz
Wejście:
++
||
||
++
Wyjście to 2 nowe linie lub 3 nowe linie
2: Częściowe pudełko
Wejście:
+-------+
| Hello |
+ ------+
Wynik:
+---------+
|+-------+|
|| Hello ||
|+ ------+|
+---------+
3: Tekst poza polem
Wejście:
+-------+
a| Hello |
+-------+
Wynik:
+----------+
| +-------+|
|a| Hello ||
| +-------+|
+----------+