Wyzwanie to jest inspirowane pytaniem SO o przemierzanie matrycy poprzez wyliczenie wszystkich jej ukośnych pasków.
Zamiast matrycy rozważ blok tekstu:
ABCD
EFGH
IJKL
Przechodzenie po przekątnych SW-NE tego bloku od lewej do prawej, zaczynając od lewego górnego rogu i kończąc w prawym dolnym rogu, daje następującą informację wyjściową:
A
EB
IFC
JGD
KH
L
Wyzwanie
Napisz program lub funkcję, która wykonuje odwrotność wyżej opisanego procesu. To znaczy, biorąc pod uwagę zestaw pasków ukośnych SW-NE, wypisz blok tekstu, który go wytworzył.
Wejście i wyjście
Zarówno dane wejściowe, jak i wyjściowe mogą być reprezentowane jako ciągi znaków z nowymi liniami lub tablice / listy ciągów.
Końcowe znaki nowej linii są opcjonalne.
Dane wejściowe będą składały się z co najmniej jednego znaku do wydrukowania i można założyć, że są poprawne (nie będzie niespójnych długości wierszy).
Blok wyjściowy zawsze będzie miał liczbę kolumn większą lub równą liczbie wierszy.
Przypadki testowe
Wejście:
A
Wynik:
A
Wejście:
.
LI
PO.
PV.
CE
G
Wynik:
.I..
LOVE
PPCG
Wejście:
M
DA
AIT
LAR
SGI
/OX
/N
/
Wynik:
MATRIX
DIAGON
ALS///
Odpowiedzi:
CJam,
2320 bajtówWypróbuj tutaj .
źródło
{_z,,Nf*W%\.+zW%sN%}
Python 2, 84
Dane wejściowe i wyjściowe są listami ciągów.
Lista linii
L
do wyjścia jest budowana, gdy czytamy dane wejściowe. Każda nowa postać jest dołączana do linii, zaczynając od ostatniej liniii=-1
i przechodząc do przodu.Ilekroć nowa linia, aby dodać zbyt długo na liście, nowy pusty wiersz jest:
L+=[''][:len(w)-len(L)]
. Mam nadzieję na sposób skrócenia tej części.źródło
Python 2,
165162169163 bajtówOdczytuje wszystkie wiersze z wejścia, a następnie zamienia je w listę list. Pętle, podczas gdy ta lista zawiera elementy. W każdej iteracji wyskakuje ostatni element z liczby list wewnętrznych równych liczbie kolumn na wyjściu. Lista jest następnie czyszczona, a linia drukowana.
Przykłady:
Dzięki w0lf za oszczędność 6 bajtów.
PYG , 139 bajtów
źródło
s=''
potrzebny?Pyton,
332325 bajtówPonieważ Python.
źródło