Schreibe ein Programm , das in einem rechteckigen Textblock nimmt die aus X
's und .
s wie dieser rauen A
:
......
..XX..
.X..X.
.XXXX.
.X..X.
.X..X.
Ausgabe einer um 45 Grad gegen den Uhrzeigersinn gedrehten Darstellung dieses Rasters durch Zeichnen eines Schrägstrichs - je nach Kontext vorwärts oder rückwärts - überall an einem X
Rand .
oder an der Seite des Rasters (wobei Leerzeichen den Rest ausfüllen):
/\/\
/ /\ \
\/ / \
/\/ /\ \
\ / \/
\ \
\ \
\/
Die Anzahl der nachgestellten und führenden Leerzeichen (und Zeilenumbrüche) spielt keine Rolle, solange die Form der Zeichen X
in der Eingabe durch die Schrägstriche erhalten bleibt. Es ist in Ordnung, zusätzliche Zeilen oder Spalten von .
zu kürzen.
Für E / A können Sie eine beliebige Kombination von stdin / stdout / files / Befehlszeilenparametern verwenden. Zum Beispiel könnte Ihr Skript einen Dateinamen des X.
Musters aufnehmen und die Datei mit dem Schrägstrichmuster neu schreiben. Oder Ihr Skript nimmt das X.
Muster zeilenweise von stdin auf ( d
wenn Sie fertig sind, drücken Sie ) und gibt das Ergebnis an stdout aus.
Die Eingabe kann beliebig groß sein, Sie können jedoch davon ausgehen, dass sie immer gut formatiert ist.
Es / \
sollten keine Zeichen und Zeilenumbrüche ausgegeben werden.
Wertung
Der kürzeste Code in Bytes gewinnt. Verwenden Sie https://mothereff.in/byte-counter als Bytezähler, wenn Sie Nicht-ASCII-Zeichen verwenden.
Bonus: Mindestens 50 Bytes, wenn Sie ein Zeichen in Ihrem Programm ändern (ersetzen, nicht entfernen) können, sodass es das um 45 Grad im Uhrzeigersinn gedrehte Schrägstrichgitter ausgibt , z.
/\/\
/ /\ \
/ \ \/
/ /\ \/\
\/ \ /
/ /
/ /
\/
Input Samples
XXXXXXXXX
X.......X
X.XXXXX.X
X.X...X.X
X.X.X.X.X
X.X...X.X
X.XXXXX.X
X.......X
XXXXXXXXX
XXX...XXX....XXX...XXX
X..X..X..X..X.....X...
XXX...XXX...X.....X.XX
X.....X.....X.....X..X
X.....X......XXX...XXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...X
X...X...............X...............X...........X...................X...X
X...X...XXXXXXXXX...X...XXXXX...XXXXXXXXX...XXXXX...XXXXX...XXXXX...X...X
X...............X.......X...X...........X...........X...X...X.......X...X
XXXXXXXXX...X...XXXXXXXXX...XXXXXXXXX...XXXXX...X...X...X...XXXXXXXXX...X
X.......X...X...............X...........X...X...X...X...X...........X...X
X...X...XXXXXXXXXXXXX...X...X...XXXXXXXXX...XXXXX...X...XXXXXXXXX...X...X
X...X...............X...X...X.......X...........X...........X.......X...X
X...XXXXXXXXXXXXX...XXXXX...XXXXX...X...XXXXX...XXXXXXXXX...X...XXXXX...X
X...........X.......X...X.......X...X.......X...........X...X...........X
X...XXXXX...XXXXX...X...XXXXX...X...XXXXXXXXX...X...X...X...XXXXXXXXXXXXX
X.......X.......X...X...X.......X.......X.......X...X...X.......X.......X
XXXXXXXXXXXXX...X...X...X...XXXXXXXXX...X...XXXXX...X...XXXXX...XXXXX...X
X...........X...X...........X.......X...X.......X...X.......X...........X
X...XXXXX...X...XXXXXXXXX...XXXXX...X...XXXXX...XXXXX...XXXXXXXXXXXXX...X
X...X.......X...........X...........X.......X...X...X...............X...X
X...X...XXXXXXXXX...X...XXXXX...XXXXXXXXX...X...X...XXXXXXXXXXXXX...X...X
X...X...........X...X...X...X...X...........X...............X...X.......X
X...XXXXXXXXX...X...X...X...XXXXX...XXXXXXXXX...XXXXXXXXX...X...XXXXXXXXX
X...X.......X...X...X...........X...........X...X.......X...............X
X...X...XXXXX...XXXXX...XXXXX...XXXXXXXXX...XXXXX...X...XXXXXXXXX...X...X
X...X...................X...........X...............X...............X...X
X...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
( Labyrinthquelle )
Verwandte Fragen:
Zeichnen der Hilbert-Kurve mit Schrägstrichen
Richten Sie eine horizontal ausgerichtete, rechtwinklige ASCII-Form entlang einer Diagonale aus
Antworten:
Python 2 -
236, 228, 226, 221, 250, 248,246 - 50 = 196Ich habe die optionale Bonusfunktion hinzugefügt, die die Richtung von rechts nach links ändert. Grundsätzlich dreht die zweite Zeile die Eingabe einfach um 90 Grad. Um zwischen beiden Optionen zu wechseln, ersetzen Sie sie
s=zip(...)
durch etwas wieS=zip(...)
(dh weisen Sie eine Variable zu, die nicht mehr verwendet wird).quelle
s
mitB
durchs=B+s+B
.MATLAB-286-50 = 236
Minimiert:
Erweitert:
Der Code kann weiter um 6 Zeichen reduziert werden (um den aktuellen Vorsprung zu binden), indem die Umwandlung in Typ entfernt
char
wird. Dies führt jedoch zu einer Warnung von MATLAB, und ich war mir nicht sicher, ob dies zulässig war.Es kann um zusätzliche 13 Zeichen reduziert werden, wenn die Eingabe ein "markiertes" Format haben soll
['X..';'.X.';'..X']
, aber ich habe auch nicht gedacht, dass dies erlaubt ist. Gegenwärtig akzeptiert das Skript nur zwei Zahlen (Zeilen- und Spaltendimensionen) und liest dann eine einzelne Zeichenfolge mit Rasterzeichen ein.Bonus
Durch Ändern von
1
in dem Aufrufx = rot90( ..., 1 );
in a0
ändert sich die Transformation von einer Drehung im Uhrzeigersinn um 45 ° in eine Drehung im Uhrzeigersinn um 45 °. Tatsächlich sind alle möglichen 45 ° + n · 90 ° -Drehungen möglich, indem dieser Parameter von0
bis schrittweise geändert wird3
.Beispielausgaben:
quelle
Perl - 409
Liest von stdin und druckt auf stdout.
Beispielausgaben:
quelle