Diese Herausforderung ist inspiriert von einer SO-Frage zum Durchlaufen einer Matrix durch Aufzählung aller diagonalen Streifen.
Betrachten Sie anstelle einer Matrix einen Textblock:
ABCD
EFGH
IJKL
Wenn Sie die SW-NE-Diagonalen dieses Blocks von links nach rechts von der oberen linken Ecke bis zur unteren rechten Ecke durchlaufen, erhalten Sie die folgende Ausgabe:
A
EB
IFC
JGD
KH
L
Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die die Umkehrung des oben beschriebenen Prozesses ausführt. Das heißt, wenn ein Satz von SW-NE-Diagonalstreifen angegeben ist, wird der Textblock ausgegeben, der ihn erzeugt hat.
Ein- und Ausgabe
Sowohl Eingabe als auch Ausgabe können als Zeichenfolgen mit Zeilenumbrüchen oder Arrays / Listen von Zeichenfolgen dargestellt werden.
Nachfolgende Zeilenumbrüche sind optional.
Die Eingabe besteht aus mindestens einem druckbaren Zeichen und kann als korrekt angenommen werden (es gibt keine inkonsistenten Zeilenlängen).
Der Ausgabeblock hat immer eine Anzahl von Spalten, die größer oder gleich der Anzahl von Zeilen ist.
Testfälle
Eingang:
A
Ausgabe:
A
Eingang:
.
LI
PO.
PV.
CE
G
Ausgabe:
.I..
LOVE
PPCG
Eingang:
M
DA
AIT
LAR
SGI
/OX
/N
/
Ausgabe:
MATRIX
DIAGON
ALS///
Antworten:
CJam,
2320 BytesProbieren Sie es hier aus .
quelle
{_z,,Nf*W%\.+zW%sN%}
Python 2, 84
Eingabe und Ausgabe sind Listen von Zeichenfolgen.
Die Liste der
L
auszugebenden Zeilen wird beim Lesen der Eingabe erstellt. Jedes neue Zeichen wird an eine Zeile angehängt, beginnend mit der letzten Zeilei=-1
und nach vorne.Immer wenn die neue hinzuzufügende Zeile zu lang für die Liste ist, wird eine neue leere Zeile angehängt:
L+=[''][:len(w)-len(L)]
. Ich hoffe auf einen Weg, diesen Teil zu verkürzen.quelle
Python 2,
165162169163 BytesLiest alle Zeilen von der Eingabe und wandelt sie dann in eine Liste von Listen um. Schleifen, während diese Liste Elemente enthält. In jeder Iteration wird das letzte Element aus der Anzahl der inneren Listen eingefügt, die der Anzahl der Spalten in der Ausgabe entspricht. Die Liste wird dann bereinigt und die Zeile gedruckt.
Beispiele:
Danke an w0lf für das Speichern von 6 Bytes.
PYG , 139 Bytes
quelle
s=''
benötigt?Python,
332325 BytesWeil Python.
quelle