Pola ASCII wyglądają tak:
++ +---+ +------+ +---+ +---+
++ | | | | | | | |
| | | | | | | |
+-+ | | | | | | | |
+-+ | | | | | | +---+
+---+ | | | |
+--+ | | | | ++
| | | | | | ||
| | +------+ | | ||
+--+ | | ||
+---+ ||
||
+-----+ ||
+------------+ | | ++
| | | |
| | | |
+------------+ +-----+
Oto kilka przykładów tych samych pól ASCII, implodowanych:
++ +- -+ +- -+ +- -+ +- -+
++ | - | | - - | | - | | - |
| | | -- | | | | |
+-+ | | | | " | - |
+-+ | - | || | | +- -+
+- -+ | | | |
+--+ | -- | | | ++
| | | - - | " ||
| | +- -+ | | ||
+--+ | - | | |
+- -+ | |
-- ||
- - +- -+ ||
+- - - -+ | - - | ++
| -- -- | | = |
| -- -- | | - - |
+- - - -+ +- -+
- -
--
Oto link do wszystkich tych skrzynek testowych w łatwiejszym do kopiowania formacie. Kolejność obejmuje wszystkie dane wejściowe, a następnie wszystkie dane wyjściowe w tej samej kolejności.
Twoim celem jest wzięcie pola ASCII jako danych wejściowych i zwrócenie pola implodowanego. Zasady implozji są następujące:
- „+” nigdy się nie zmienia; ani „-”, ani „|” bezpośrednio przylegające do „+”
- Zaczynając od narożników, „-” i „|” przesuń się do środka o jedno pole więcej niż ta sama postać bliżej rogu. Jeśli „-” i „|” nigdy nie ruszyłby się w to samo miejsce, żaden ruch.
- Jeśli „-” i „-” przesuną się w to samo miejsce, wstaw „=” w tym miejscu. Jeśli „|” i „|” przesuń się w to samo miejsce, umieść „w tym miejscu. Liczą się one jako dwie ich postacie w tym samym miejscu poruszające się w przeciwnych kierunkach.
- Dwa „-” lub dwa „|” mogą przechodzić obok siebie, jak pokazano w lewym dolnym przykładzie.
- Jeśli pudełko jest wystarczająco chude, zacznie się rozszerzać na zewnątrz w ten sam sposób, zawsze odsuwając się od strony, z której zaczął.
- Wynik powinien być symetryczny wzdłuż linii środkowej w obu kierunkach xi y (ignorując znaki nowej linii); obejmuje to spacje, więc wynik może wymagać wypełnienia spacjami, aby to spełnić.
Szczegóły reguły:
- To jest golf golfowy, więc wygrywa najkrótszy program w bajtach.
- Obowiązują standardowe luki.
- Możesz założyć, że każda linia kończy się znakiem nowej linii.
- Jedynymi znakami w ciągu wejściowym będą „+”, „-”, „|”, „” i „\ n” (nowa linia), a ciąg wyjściowy powinien podlegać tym samym regułom, z dodaniem „=” i „jako możliwe znaki.
- Opcjonalnie możesz mieć jeden końcowy znak nowej linii na końcu ostatniego wiersza.
- Najmniejsze pole ASCII, które musisz obsłużyć, to lewy górny przykład. Każde pudełko ASCII będzie miało dokładnie 4 „+”, dokładnie w rogach.
- Będziesz musiał obsługiwać pola wielkości
m x ndla dowolnych liczb całkowitych,m,ntakich jak2<=m,n<256(największy możliwy rozmiar ciągu255*(255+1)) - Możesz założyć, że zawsze dostaniesz jedno ważne pole ASCII jako dane wejściowe.
||w tym przykładzie musi być "kimś ...
"choć trochę ? "Wydaje mi się, że pojawia się tylko na 3 lub więcej?
"poszedł? Po lewej czy po prawej stronie? Nie może to być jedno i drugie, ale nie może być tak samo, ponieważ wynik jest symetryczny.