Sie erhalten ein rechteckiges Raster der Zeichen .
und #
wie folgt:
..........
..#.......
....#..#..
...#......
..........
Ihre Aufgabe ist es, den gesamten achsenbündigen Begrenzungsrahmen des #
mit weiter zu füllen #
:
..........
..######..
..######..
..######..
..........
Der achsenausgerichtete Begrenzungsrahmen ist das kleinste Rechteck, das alle Zeichen enthält #
.
Mehr wollen? Versuchen Sie Teil II!
Regeln
Sie können zwei beliebige verwenden verschiedene druckbaren ASCII - Zeichen (0x20 bis 0x7E, inklusive), anstelle von #
und .
. Ich werde sie weiterhin als bezeichnen#
und .
für den Rest der Spezifikation bezeichnen.
Eingabe und Ausgabe können entweder eine durch Zeilenvorschub getrennte Zeichenfolge oder eine Liste von Zeichenfolgen sein (eine für jede Zeile), das Format muss jedoch konsistent sein.
Sie können davon ausgehen, dass die Eingabe mindestens eine enthält #
und alle Zeilen gleich lang sind.
Sie können ein Programm oder eine Funktion schreiben und eine unserer Standardmethoden verwenden zum Empfangen und Bereitstellen von Eingaben verwenden.
Sie können jede Programmiersprache verwenden , aber beachten Sie, dass diese Lücken standardmäßig verboten sind.
Das ist Code-Golf , also gewinnt die kürzeste gültige Antwort - gemessen in Bytes .
Testfälle
Jeder Testfall hat Ein- und Ausgänge nebeneinander.
# #
... ...
#.. #..
... ...
... ...
#.. ###
..# ###
.#. ###
#.. ###
..# ###
..... .....
.#.#. .###.
..... .....
... ...
.#. .#.
... .#.
.#. .#.
... ...
.......... ..........
.......... ..........
....#..... ....#.....
.......... ..........
.......... ..........
.......... ..........
....#..... ...##.....
...#...... ...##.....
.......... ..........
..#....... ..###.....
....#..... ..###.....
...#...... ..###.....
.......... ..........
..#....... ..######..
....#..#.. ..######..
...#...... ..######..
.........# ..########
..#....... ..########
....#..#.. ..########
...#...... ..########
Antworten:
VBA Excel,
150 Bytes146 BytesAnweisung:
Erstellen Sie eine Arbeitsmappe mit zwei leeren Arbeitsblättern: Sheet1 und Sheet2. Legen Sie die Eingabe in Sheet1 fest, und fügen Sie dann den folgenden Code in dem Codemodul Sheet1 ein
Ungolfed den Code:
Erläuterung:
Beispiel I / O:
Vorsichtsmaßnahme: Stellen Sie sicher, dass jede Zelle in Sheet2 immer leer ist, wenn Sie das Programm ausführen.
quelle
=C.Value
in der ersten Zeile stehen="#"
?05AB1E ,
70686961586040 ByteErläuterung
Probieren Sie es online aus
quelle
Mathematica,
91-70Bytes21 Bytes aufgrund von @MartinEnder gespeichert .
Anonyme Funktion. Nimmt eine Zeichenmatrix als Eingabe und gibt eine Zeichenmatrix als Ausgabe zurück. Das Unicode-Zeichen ist U + F3C7 für
\[Transpose]
.quelle
C #,
262251 BytesWerde weiter Golf spielen, wenn ich mehr Zeit habe.
Es kompiliert in eine
Func<string[], string[]>
.Formatierte Version:
quelle
Jelly ,
21191817 BytesDies ist ein volles Programm. Eingabe und Ausgabe sind Zeichenfolgen von 0 und 1 , die durch Zeilenvorschübe begrenzt werden.
Probieren Sie es online! oder überprüfen Sie alle Testfälle .
Wie es funktioniert
quelle
Netzhaut , 87 Bytes
Die Anzahl der Bytes setzt die Kodierung nach ISO 8859-1 voraus.
Verwendet
A
für.
undZ
für#
.Probieren Sie es online!
quelle
Scala, 317 Zeichen
Mehr lesbare Version, hätte es wohl mehr golfen können:
quelle
JavaScript (ES6), 168 Byte
Übernimmt die Eingabe als mehrzeilige Zeichenfolge. Entfernt rekursiv führende und nachfolgende
.
s aus allen Zeilen, bis mindestens eine Zeile mit einem beginnt und endet.#
Wählt dann so viele Zeilen wie möglich aus, beginnt und endet jedoch in Zeilen, die#
alle.
s enthalten, und ändert sie in#
. Wahrscheinlich leicht golfbar.quelle
R
158BytesDieses Programm nimmt zeilenweise Eingabepunkte
.
und Hashtags auf#
.Ungolfed:
Hier sind die Details der dritten Zeile:
quelle
PowerShell v3 +,
215162148144139 BytesNimmt Eingaben als ein Array von Zeichenfolgen
$n
mit0
anstelle von.
und1
anstelle von#
. Dann durchlaufen wir eine Schleife$n
, wobei bei jeder Iteration geprüft wird, ob die aktuelle Zeichenfolge kleiner ist als0
(dh,1
sie enthält eine), und geben in diesem Fall eine Zeichenfolge aus. Verwendet ein Pseudoternäres anstelle einerif
/else
-Operation.Die Zeichenfolge besteht aus Schleifen über die Breite der Eingabezeichenfolge. Bei jeder Iteration wenden wir uns einem
0
oder einem zu,1
je nachdem, ob1
sich irgendwo in der entsprechenden vertikalen Spalte etwas befindet. Für den letzten Testfall führt dies beispielsweise zu einer Zeichenfolge wie0011001001
. Benötigt v3 + für den-in
Operator. Diese Zeichenfolge wird mit einem ausgefallenen regulären Ausdruck kombiniert, um "innere" durch "0
s " zu ersetzen1
. Vielen Dank an Business Cat im Chat für die Unterstützung. Unsere Saite wäre0011111111
an diesem Punkt.Anderenfalls geben Sie die aktuelle Zeichenfolge (nur Nullen) aus
$_
.Die resultierenden Zeichenfolgen verbleiben in der Pipeline, und die Ausgabe ist implizit. Der Standardwert
Write-Output
für ein Array von Zeichenfolgen ist ein Zeilenumbruch zwischen den einzelnen Elementen. Dies geschieht also visuell.Beispiele
quelle
Python,
219212 Bytes(Obwohl ich denke, dass eine andere Methode möglicherweise kürzer ist)
Nimmt eine Liste von Zeichen und gibt sie zurück.
Teste es auf ideoone
quelle
Perl 6 , 62 Bytes
Eine anonyme Routine, der ein Array von Zeichenarrays (die die Matrix darstellen) als Argument übergeben werden kann und die das Array direkt so ändert, dass der aufrufende Bereich das geänderte Array anschließend hat.
Wird
a
anstelle des#
"Ein" -Zeichens verwendet. Das "Aus" -Zeichen kann alles sein, es ist egal.quelle
Python 3, 153 Bytes
Eingabe und Ausgabe sind eine Liste von Zeichenfolgen.
ungolfed
Theorie der Arbeitsweise
Die Hauptidee ist, Zeilen und Spalten außerhalb des Arrays zu entfernen, wenn sie kein '#' haben. Was noch übrig ist, muss mit '#' ausgefüllt werden.
Es wird mit einer rekursiven Funktion implementiert.
Fall 1: Zeile 0 enthält kein '#'. Ergebnis ist Zeile 0 + rekursiver Aufruf für die verbleibenden Zeilen.
Fall 2: Zeile 0 enthält ein '#'. Es können keine weiteren Zeilen entfernt werden. Drehen Sie das Array im Uhrzeigersinn, sodass Spalte 0 jetzt Zeile 0 ist. Verarbeiten Sie dann das gedrehte Array rekursiv. Das Ergebnis wird im Uhrzeigersinn gedreht.
Basisfall: Das Array wurde viermal gedreht, dh alle äußeren Zeilen / Spalten wurden nach Möglichkeit entfernt. Was übrig bleibt, sollte mit '#' ausgefüllt werden
quelle
Perl, 51 Bytes
Beinhaltet +2 für
-0p
Geben Sie STDIN ein, aus Zeichen ist
A
, ein Zeichen ista
, zB:bounding.pl
:Die gleiche Länge:
quelle
Python 2, 184 Bytes
Eingabe und Ausgabe sind eine Liste von Zeichenfolgen.
Probieren Sie es auf Ideone (Gabel von Jonathan Allans Testseite)
quelle
Pyth , 50 Bytes
Probieren Sie es online!
quelle