Перемістіть слово хмара


18

Фон

Я хотів зробити гарне слово хмара, як це:

these    are
    words   

  floating  

Я обчислював (x,y)-координати першої літери кожного слова, підключав їх до мого генератора хмарних слів і дозволяв виконувати свою роботу. Однак я випадково використав (y,x)-координати, тому результат виглядає приблизно так:

these      

   floating

 words     



are        

Оскільки я лінивий, щоб перерахувати координати, мені потрібно, щоб ти переніс слово хмара.

Вхідні дані

Ваш вхід - це прямокутна сітка з малих літер і пробілів 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      |

Відповіді:


7

Perl, 58 байт

Додано +2 для -lp

Дайте вхід на STDIN, запустіть як perl -lp wordcloud.pl

wordcloud.pl:

s/\w+/$l|=$a[pos]|=$"x~-$..$&/eg}for(@a){$_|=$l=~y// /cr
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.