Contexte
Je voulais faire un joli nuage de mots, comme ceci:
these are
words
floating
J'ai calculé les (x,y)
coordonnées de la première lettre de chaque mot, je les ai branchées sur mon générateur de nuage de mots et je l'ai laissé faire son travail. Cependant, j'ai accidentellement utilisé des (y,x)
coordonnées, donc le résultat ressemble à ceci:
these
floating
words
are
Comme je suis trop paresseux pour recalculer les coordonnées, j'ai besoin que vous transposiez le mot nuage pour moi.
Contribution
Votre saisie est une grille rectangulaire de lettres et d'espaces ASCII minuscules. Cela signifie que chaque ligne est remplie d'espaces pour avoir la même longueur. L'entrée peut être considérée comme une chaîne multi-lignes ou un tableau de chaînes.
Un mot est un segment horizontal de lettres, et sa position est les (x,y)
coordonnées de sa lettre la plus à gauche, le coin supérieur gauche de la grille étant (0,0)
. Il y aura toujours au moins un mot et il n'y aura pas de lignes ou de colonnes d'espaces de fin. Cependant, des lignes ou des colonnes d'espaces en tête peuvent être présentes.
Production
Votre sortie est une autre grille rectangulaire de caractères, obtenue en déplaçant chaque mot avec position (x,y)
en position (y,x)
. Votre production ne doit pas contenir de lignes ou colonnes d'espaces de fin supplémentaires. Les lignes et colonnes de tête doivent être conservées et la sortie doit être rectangulaire .
Vous pouvez supposer que cette transformation ne crée pas de mots qui se chevauchent et ne fusionne pas plusieurs mots en un seul. Cela signifie que l'exécution du programme sur la sortie devrait produire l'entrée d'origine.
Règles et notation
Vous pouvez écrire un programme complet ou une fonction. Le nombre d'octets le plus bas l'emporte et les failles standard sont interdites.
Cas de test
Pour plus de clarté (et puisque Stack Exchange n'aime pas les lignes d'espace uniquement), chaque ligne se termine par un caractère de canal |
.
Ceux-ci ne font pas partie de l'entrée ou de la sortie réelle et vous devez les supprimer. Notez à nouveau que l'exécution du programme sur chaque sortie devrait également produire l'entrée correspondante.
Input:
oneword|
Output:
oneword|
Input:
spaces|
Output:
|
|
spaces|
Input:
|
row|
Output:
row|
Input:
these are|
words |
|
floating |
Output:
these |
|
floating|
|
words |
|
|
|
are |
Input:
same|
the |
|
same |
Output:
same|
the |
|
same |
Input:
some |
words k|
|
|
|
still|
Output:
words |
|
some still|
|
|
|
k |
Input:
hello |
world hey|
what up |
Output:
what|
|
world|
hello |
|
|
|
up |
hey |
Input:
a b a d cc|
g h huh nng|
ye dunnn |
dud yo |
wha g |
huh heh hah|
Output:
|
g wha |
a ye huh|
h |
b dud |
dunnn |
huh heh|
a g |
|
d yo |
nng hah|
cc |