単語の雲を転置する


18

バックグラウンド

次のように、きれいな単語雲を作りたいと思いました。

these    are
    words   

  floating  

(x,y)各単語の最初の文字の-座標を計算し、それらを単語クラウドジェネレーターにプラグインして、その仕事をさせました。ただし、誤って(y,x)-coordinatesを使用したため、結果は次のようになります。

these      

   floating

 words     



are        

私は座標を再計算するのが面倒なので、私のために単語の雲を転置する必要があります。

入力

入力は、小文字のASCII文字とスペースの長方形のグリッドです。つまり、すべての行に同じ長さになるようにスペースが埋め込まれます。入力は、複数行の文字列または文字列の配列として取得できます。

単語は、文字の水平セグメントであり、その位置がある(x,y)、その左端の文字、グリッドの存在の左上隅の-coordinates (0,0)。常に少なくとも1つの単語があり、スペースの末尾の行または列はありません。ただし、スペースの先頭の行または列が存在する場合があります。

出力

出力は、位置(x,y)を持つすべての単語をposition に移動することにより取得される、文字の別の長方形グリッドです(y,x)。出力に、スペースの余分な末尾の行または列を含めることはできません。先行する行と列は保持する必要があり、出力は長方形でなければなりません

この変換は、重複する単語を作成せず、複数の単語を1つにマージしないと仮定できます。これは、出力でプログラムを実行すると元の入力が生成されることを意味します。

ルールとスコアリング

完全なプログラムまたは関数を作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。

テストケース

わかりやすくするため(および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      |

回答:


7

Perl、58バイト

に+2を追加 -lp

STDINに入力を与え、次を実行 perl -lp wordcloud.pl

wordcloud.pl

s/\w+/$l|=$a[pos]|=$"x~-$..$&/eg}for(@a){$_|=$l=~y// /cr
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.