Эта задача вдохновлена SO вопросом о обходе матрицы путем перечисления всех ее диагональных полос.
Вместо матрицы рассмотрим блок текста:
ABCD
EFGH
IJKL
Обход диагоналей SW-NE этого блока слева направо, начиная с левого верхнего угла и заканчивая правым нижним, приводит к следующему выводу:
A
EB
IFC
JGD
KH
L
Вызов
Напишите программу или функцию, которые выполняют обратную процедуру, описанную выше. То есть, с учетом набора диагональных полос SW-NE, выведите блок текста, который его создал.
Вход и выход
И вход, и выход могут быть представлены как строки с символами новой строки или массивами / списками строк.
Конечные переводы строки не обязательны.
Ввод будет состоять как минимум из одного печатаемого символа и может считаться правильным (не будет несовместимой длины строки).
Выходной блок всегда будет иметь количество столбцов, большее или равное количеству строк.
Тестовые случаи
Входные данные:
A
Вывод:
A
Входные данные:
.
LI
PO.
PV.
CE
G
Вывод:
.I..
LOVE
PPCG
Входные данные:
M
DA
AIT
LAR
SGI
/OX
/N
/
Вывод:
MATRIX
DIAGON
ALS///
Ответы:
CJam,
2320 байтПопробуй это здесь .
источник
{_z,,Nf*W%\.+zW%sN%}
Python 2, 84
Вход и выход представляют собой списки строк.
Список строк
L
для вывода строится, когда мы читаем ввод. Каждый новый символ добавляется в строку, начиная с последней строкиi=-1
и продвигаясь вперед.Всякий раз , когда новая линия , чтобы добавить слишком много времени для списка, новая пустая строка добавляется:
L+=[''][:len(w)-len(L)]
. Я надеюсь на способ сократить эту часть.источник
Python 2,
165162169163 байтаЧитает все строки из ввода, затем превращает их в список списков. Циклы, пока в этом списке есть элементы. В каждой итерации он выталкивает последний элемент из числа внутренних списков, равного количеству столбцов в выходных данных. Затем список очищается и печатается строка.
Примеры:
Спасибо w0lf за сохранение 6 байтов.
PYG , 139 байт
источник
s=''
нужен?Python,
332325 байтПотому что питон.
источник