Chuyển một đám mây từ


18

Lý lịch

Tôi muốn tạo ra một đám mây từ đẹp, như thế này:

these    are
    words   

  floating  

Tôi đã tính toán các (x,y)thứ tự của chữ cái đầu tiên của mỗi từ, cắm chúng vào trình tạo đám mây từ của tôi và để nó thực hiện công việc của nó. Tuy nhiên, tôi đã vô tình sử dụng các (y,x)phối hợp, vì vậy kết quả trông như thế này:

these      

   floating

 words     



are        

Vì tôi quá lười để tính lại tọa độ, tôi cần bạn hoán chuyển từ đám mây cho tôi.

Đầu vào

Đầu vào của bạn là một lưới hình chữ nhật gồm các chữ cái và chữ ASCII viết thường. Điều này có nghĩa là mỗi hàng được đệm bằng khoảng trắng để có cùng độ dài. Đầu vào có thể được lấy dưới dạng một chuỗi nhiều dòng hoặc một chuỗi các chuỗi.

Một từ là một phân đoạn ngang của các chữ cái và vị trí của nó là các (x,y)tọa độ của chữ cái ngoài cùng bên trái của nó, góc trên bên trái của lưới (0,0). Sẽ luôn có ít nhất một từ và không có hàng hoặc cột của dấu cách. Tuy nhiên, hàng hoặc cột hàng đầu của không gian có thể có mặt.

Đầu ra

Đầu ra của bạn là một lưới các ký tự hình chữ nhật khác, thu được bằng cách di chuyển mọi từ có vị trí (x,y)sang vị trí (y,x). Đầu ra của bạn không được chứa các hàng hoặc cột không gian kéo dài thêm. Các hàng và cột hàng đầu phải được bảo tồn và đầu ra phải là hình chữ nhật .

Bạn có thể cho rằng phép chuyển đổi này không tạo ra các từ chồng chéo và không hợp nhất nhiều từ thành một. Điều này có nghĩa là chạy chương trình trên đầu ra sẽ tạo ra đầu vào ban đầu.

Quy tắc và tính điểm

Bạn có thể viết một chương trình đầy đủ hoặc một chức năng. Số byte thấp nhất sẽ thắng và các sơ hở tiêu chuẩn không được phép.

Các trường hợp thử nghiệm

Để rõ ràng (và vì Stack Exchange không thích các dòng chỉ có không gian), mỗi hàng kết thúc bằng một ký tự ống |. Đây không phải là một phần của đầu vào hoặc đầu ra thực tế , và bạn nên loại bỏ chúng. Lưu ý một lần nữa rằng việc chạy chương trình trên mỗi đầu ra cũng sẽ tạo ra đầu vào tương ứng.

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      |

Câu trả lời:


7

Perl, 58 byte

Đã thêm +2 cho -lp

Cung cấp đầu vào trên STDIN, chạy như perl -lp wordcloud.pl

wordcloud.pl:

s/\w+/$l|=$a[pos]|=$"x~-$..$&/eg}for(@a){$_|=$l=~y// /cr
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.