转置词云


18

背景

我想做一个漂亮的词云,像这样:

these    are
    words   

  floating  

我计算了(x,y)每个单词的第一个字母的-coordinates,将它们插入到我的词云生成器中,然后让它完成工作。但是,我不小心使用了(y,x)-coordinates,因此结果如下所示:

these      

   floating

 words     



are        

由于我懒得重新计算坐标,因此我需要您为我移调“ cloud”一词。

输入值

您的输入是一个由小写ASCII字母和空格组成的矩形网格。这意味着每行都用空格填充以具有相同的长度。输入可以作为多行字符串或字符串数​​组。

是字母一个水平段,其位置是在(x,y)其最左边的字母,网格之中的左上角的坐标- (0,0)。总会有至少一个单词,并且没有尾随空格或空格。但是,可能会出现前导的行或列的空间。

输出量

您的输出是另一个矩形的字符网格,通过将每个单词随位置移动(x,y)到位置而获得(y,x)。您的输出不得包含多余的尾随行或空格列。前导行和列必须保留,并且输出必须是矩形

您可以假定此转换不会创建重叠的单词,也不会将多个单词合并为一个单词。这意味着在输出上运行程序应产生原始输入。

规则和计分

您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。

测试用例

为了清楚起见(并且因为Stack Exchange不喜欢仅使用空格的行),所以每一行均以竖线字符结尾|这些不是实际输入或输出的一部分,您应该删除它们。再次注意,在每个输出上运行程序也应产生相应的输入。

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      |

Answers:


7

Perl,58个字节

为+2 -lp

在STDIN上输入,运行为 perl -lp wordcloud.pl

wordcloud.pl

s/\w+/$l|=$a[pos]|=$"x~-$..$&/eg}for(@a){$_|=$l=~y// /cr
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.