Ich wollte schon immer einen Text mit #
s umgeben, aber ich habe Probleme herauszufinden, was ich umgeben habe, so dass Sie in dieser Herausforderung ein Programm schreiben werden, um genau das zu tun
Beispiele
Ein- / Ausgänge werden durch einen Zeilenumbruch getrennt.
###
#a#
###
a
#
#a#
#
a
###
# a #
# b c #
#######
a
b c
ABCDHIJ
E####GK
F# M #L
# N#O
P####
M
N
###A###
#C#B#o#
#d###e#
# go#
###
C o
d e
go
Spec
#
s sind das, was einen Textblock "umgibt"#
wird immer nebeneinander sein (auch diagonal)#
wird immer eine geschlossene Form bilden- Es wird nur eine
#
Form geben - Im Falle einer konkaven Form sollten die Löcher mit Leerzeichen gefüllt werden.
- Leerzeichen müssen in der Ausgabe erhalten bleiben
#
s raus und los gehts ... und dann wurde es schwer.\n
nach jeder eingabezeile formatiert und als funktion param an mein programm übergeben werden oder was?_M_\n___N
(Unterstriche anstelle von Leerzeichen wegen Formatierungsproblemen), während die Ausgabe in den Beispielen abc und Codego auch Leerzeichen enthält, bei denen die Eingabe #s enthielt. Wenn nur der von # umgebene Text gedruckt werden soll, sollte die Ausgabe des abc- Beispiels_a_\n_b_c_
(anstelle von__a_\n_b_c
) und die Ausgabe des Codego- BeispielsCo\nde\n_go
(anstelle vonC___o\nd___e\n__go
) sein.MN
Beispiel behoben .Antworten:
Perl,
144138132129128127126124 BytesBeinhaltet +2 für
-p0
Es wird davon ausgegangen, dass der Code
\0
kein gültiges Eingabezeichen ist (zumindest innerhalb von#
).Führen Sie mit der Eingabe auf STDIN aus:
surround.pl
:Der Code funktioniert wie er ist, aber ersetzen Sie die
\0
und\n
durch die Literalversionen für die beanspruchte Punktzahl. Beachten Sie, dassam Ende der Zeile ein Leerzeichen steht. Der Code wird viel zu oft wiederholt, sodass Sie möglicherweise 30 Sekunden auf die Ausgabe warten müssen.
Erläuterung
Ich werde ein Floodfill machen, bei dem
\0
von#
außen in orthogonalen Richtungen angehalten wird . Danach werde ich die#
Seiten abschneiden und alles, was übrig bleibt, durch Leerzeichen ersetzen. Um nicht alle Richtungen in der Überflutung bewältigen zu müssen, drehe ich immer wieder den Zielbereich und fülle nur die Überflutung von rechts nach linksAn dieser Stelle z
wird ersetzt durch:
Grundsätzlich wurden alle Spalten und Zeilen, die nicht direkt an die Innenseite angrenzen, abgeschnitten. Alle übrigen Zeichen wurden durch \ 0 ersetzt. Oben und rechts befindet sich eine zusätzliche Ebene von \ 0. Alles, was übrig bleibt, ist Aufräumen:
quelle
#
. Bitte überprüfen Sie meine Bash-Sitzung: codepad.org/YbCzB4O4Javascript,
485 464 427 417 396390 BytesJa. Ich habe es versucht. Und obwohl ich bei
485Bytes bin, gewinne ich, weil niemand sonst Lust hatte, diese Frage zu beantworten. Also, hah!Und außerdem bin ich mir bewusst, dass ich so viel Golf spielen kann. Ich bin im Moment nur müde. Nun, jetzt bin ich bei 396. Danke an Conor für den Großteil des Golfspiels
quelle
y=z=0