fundo
Eu queria criar uma nuvem de palavras bonita, assim:
these are
words
floating
(x,y)
Calculei as coordenadas da primeira letra de cada palavra, conectei-as ao meu gerador de nuvem de palavras e deixei que ele fizesse seu trabalho. No entanto, acidentalmente usei (y,x)
-coordinates, portanto, o resultado fica assim:
these
floating
words
are
Como tenho preguiça de recalcular as coordenadas, preciso que você transponha a nuvem de palavras para mim.
Entrada
Sua entrada é uma grade retangular de letras e espaços ASCII minúsculos. Isso significa que cada linha é preenchida com espaços para ter o mesmo comprimento. A entrada pode ser tomada como uma sequência de linhas múltiplas ou uma matriz de sequências.
Uma palavra é um segmento horizontal de letras e sua posição é a (x,y)
coordenada da letra mais à esquerda, sendo o canto superior esquerdo da grade (0,0)
. Sempre haverá pelo menos uma palavra e não há linhas ou colunas finais de espaços. No entanto, linhas ou colunas à esquerda de espaços podem estar presentes.
Resultado
Sua saída é outra grade retangular de caracteres, obtida movendo cada palavra com posição (x,y)
para posição (y,x)
. Sua saída não deve conter linhas ou colunas finais extras de espaços. As linhas e colunas iniciais devem ser preservadas e a saída deve ser retangular .
Você pode assumir que essa transformação não cria palavras sobrepostas e não mescla várias palavras em uma. Isso significa que a execução do programa na saída deve produzir a entrada original.
Regras e pontuação
Você pode escrever um programa completo ou uma função. A menor contagem de bytes vence e as brechas padrão não são permitidas.
Casos de teste
Para maior clareza (e como o Stack Exchange não gosta de linhas somente de espaço), cada linha termina em um caractere de barra vertical |
.
Isso não faz parte da entrada ou saída real e você deve removê-los. Observe novamente que a execução do programa em cada saída também deve produzir a entrada correspondente.
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 |