ASCII-Boxen sehen folgendermaßen aus:
++ +---+ +------+ +---+ +---+
++ | | | | | | | |
| | | | | | | |
+-+ | | | | | | | |
+-+ | | | | | | +---+
+---+ | | | |
+--+ | | | | ++
| | | | | | ||
| | +------+ | | ||
+--+ | | ||
+---+ ||
||
+-----+ ||
+------------+ | | ++
| | | |
| | | |
+------------+ +-----+
Hier einige Beispiele für dieselben implodierten ASCII-Boxen:
++ +- -+ +- -+ +- -+ +- -+
++ | - | | - - | | - | | - |
| | | -- | | | | |
+-+ | | | | " | - |
+-+ | - | || | | +- -+
+- -+ | | | |
+--+ | -- | | | ++
| | | - - | " ||
| | +- -+ | | ||
+--+ | - | | |
+- -+ | |
-- ||
- - +- -+ ||
+- - - -+ | - - | ++
| -- -- | | = |
| -- -- | | - - |
+- - - -+ +- -+
- -
--
Hier ist ein Link zu all diesen Testfallboxen in einem einfacher zu kopierenden Format. Die Reihenfolge besteht aus allen Eingaben, gefolgt von allen Ausgaben in derselben Reihenfolge.
Ihr Ziel ist es, eine ASCII-Box als Eingabe zu verwenden und die implodierte Box zurückzugeben. Die Implosionsregeln sind:
- "+" ändert sich nie; Weder "-" noch "|" direkt neben "+"
- Ausgehend von den Ecken werden "-" und "|" Bewegen Sie sich ein Feld weiter nach innen als der gleiche Charakter, der sich näher an der Ecke befand. Wenn ein "-" und "|" würde sich jemals an die gleiche Stelle bewegen, weder bewegt.
- Wenn sich ein "-" und ein "-" an derselben Stelle befinden, setzen Sie dort ein "=". Wenn ein "|" und "|" bewege dich an die gleiche Stelle, setze ein "in diese Stelle. Diese zählen als zwei ihrer jeweiligen Charaktere an der gleichen Stelle, die sich in entgegengesetzte Richtungen bewegen.
- Zwei "-" oder zwei "|" können sich aneinander vorbeibewegen, wie im Beispiel unten links gezeigt.
- Wenn die Box dünn genug ist, dehnt sie sich in gleicher Weise nach außen aus und bewegt sich dabei immer von der Seite weg, an der sie begonnen hat.
- Das Ergebnis sollte sowohl in x- als auch in y-Richtung symmetrisch zur Mittellinie sein (Zeilenumbrüche werden ignoriert). Dies schließt Leerzeichen ein. Daher muss das Ergebnis möglicherweise mit Leerzeichen aufgefüllt werden, um dies zu erfüllen.
Regeldetails:
- Das ist Code-Golf, also gewinnt das kürzeste Programm in Bytes.
- Es gelten Standardlücken.
- Sie können davon ausgehen, dass jede Zeile mit einem Zeilenumbruch endet.
- Die einzigen Zeichen in der Eingabezeichenfolge sind "+", "-", "|", "" und "\ n" (Zeilenvorschub). Die Ausgabezeichenfolge sollte denselben Regeln folgen, wobei "=" hinzugefügt wird. und "als mögliche Zeichen.
- Optional können Sie am Ende der letzten Zeile eine einzelne nachgestellte Zeile einfügen.
- Das kleinste ASCII-Feld, das Sie verarbeiten müssen, ist das Beispiel oben links. Jede ASCII-Box hat genau 4 "+" genau an ihren Ecken.
- Sie müssen Felder der Größe
m x n
für alle Ganzzahlenm,n
so behandeln, dass2<=m,n<256
(größtmögliche Zeichenfolgengröße von255*(255+1)
) - Sie können davon ausgehen, dass Sie immer eine einzige gültige ASCII-Box als Eingabe erhalten.
||
in diesem Beispiel muss ein "
oder etwas sein ...
"
obwohl geben? Ich schätze das "
erscheint nur auf 3 oder größer?
"
gehen? Links oder rechts? Es kann nicht beides sein, aber es kann auch nicht beides sein, weil das Ergebnis symmetrisch ist.