Ce défi est inspiré d' une question SO sur la traversée d'une matrice en énumérant toutes ses bandes diagonales.
Au lieu d'une matrice, considérez un bloc de texte:
ABCD
EFGH
IJKL
La traversée des diagonales SW-NE de ce bloc de gauche à droite, en partant du coin supérieur gauche et se terminant en bas à droite, donne le résultat suivant:
A
EB
IFC
JGD
KH
L
Défi
Écrivez un programme ou une fonction qui exécute l'inverse du processus décrit ci-dessus. C'est-à-dire, étant donné un ensemble de bandes diagonales SW-NE, sortir le bloc de texte qui l'a produit.
Entrée et sortie
L'entrée et la sortie peuvent être représentées sous forme de chaînes avec des retours à la ligne ou des tableaux / listes de chaînes.
Les sauts de ligne sont facultatifs.
L'entrée comprendra au moins un caractère imprimable et peut être considérée comme correcte (il n'y aura pas de longueurs de ligne incohérentes).
Le bloc de sortie aura toujours un nombre de colonnes supérieur ou égal au nombre de lignes.
Cas de test
Contribution:
A
Production:
A
Contribution:
.
LI
PO.
PV.
CE
G
Production:
.I..
LOVE
PPCG
Contribution:
M
DA
AIT
LAR
SGI
/OX
/N
/
Production:
MATRIX
DIAGON
ALS///
Réponses:
CJam,
2320 octetsEssayez-le ici .
la source
{_z,,Nf*W%\.+zW%sN%}
Python 2, 84
L'entrée et la sortie sont des listes de chaînes.
La liste des lignes
L
à produire est établie au fur et à mesure que nous lisons l'entrée. Chaque nouveau personnage est ajouté à une ligne, en commençant par la dernière lignei=-1
et en progressant vers l'avant.Chaque fois que la nouvelle ligne à ajouter est trop long pour la liste, est ajouté une nouvelle ligne vide:
L+=[''][:len(w)-len(L)]
. J'espère un moyen de raccourcir cette partie.la source
Python 2,
165162169 169163 octetsLit toutes les lignes de l'entrée, puis les transforme en une liste de listes. Boucles alors que cette liste contient des éléments. À chaque itération, il extrait le dernier élément du nombre de listes internes égal au nombre de colonnes dans la sortie. La liste est ensuite nettoyée et la ligne imprimée.
Exemples:
Merci à w0lf pour avoir économisé 6 octets.
PYG , 139 octets
la source
s=''
nécessaire?Python,
332325 octetsParce que Python.
la source