Este desafío está inspirado en una pregunta SO sobre atravesar una matriz enumerando todas sus tiras diagonales.
En lugar de una matriz, considere un bloque de texto:
ABCD
EFGH
IJKL
Al atravesar las diagonales SW-NE de este bloque de izquierda a derecha, comenzando desde la esquina superior izquierda y terminando en la esquina inferior derecha, se obtiene el siguiente resultado:
A
EB
IFC
JGD
KH
L
Desafío
Escriba un programa o una función que ejecute el reverso del proceso descrito anteriormente. Es decir, dado un conjunto de tiras diagonales SW-NE, genera el bloque de texto que lo produjo.
Entrada y salida
Tanto la entrada como la salida se pueden representar como cadenas con nuevas líneas o matrices / listas de cadenas.
Las nuevas líneas finales son opcionales.
La entrada consistirá en al menos un carácter imprimible y se puede suponer que es correcta (no habrá longitudes de fila inconsistentes).
El bloque de salida siempre tendrá una cantidad de columnas mayor o igual que la cantidad de filas.
Casos de prueba
Entrada:
A
Salida:
A
Entrada:
.
LI
PO.
PV.
CE
G
Salida:
.I..
LOVE
PPCG
Entrada:
M
DA
AIT
LAR
SGI
/OX
/N
/
Salida:
MATRIX
DIAGON
ALS///
Respuestas:
CJam,
2320 bytesPruébalo aquí .
fuente
{_z,,Nf*W%\.+zW%sN%}
Pitón 2, 84
La entrada y la salida son listas de cadenas.
La lista de líneas
L
para generar se construye a medida que leemos la entrada. Cada nuevo personaje se agrega a una línea, comenzando desde la última líneai=-1
y avanzando hacia el frente.Cada vez que la nueva línea a añadir es demasiado larga para la lista, una nueva línea vacía se añade:
L+=[''][:len(w)-len(L)]
. Espero una forma de acortar esta parte.fuente
Python 2,
165162169163 bytesLee todas las líneas de entrada, luego las convierte en una lista de listas. Bucles mientras esa lista tiene elementos. En cada iteración, muestra el último elemento del número de listas internas igual al número de columnas en la salida. Luego se limpia la lista y se imprime la línea.
Ejemplos:
Gracias a w0lf por guardar 6 bytes.
PYG , 139 bytes
fuente
s=''
necesita el último ?Pitón,
332325 bytesPorque Python
fuente