Ваше завдання - взяти послідовність символів (музику) як вхід (у функції чи програмі) та надрукувати (або повернути) музику так, як вона виглядала б у музичній скриньці.
Ви будете отримувати символи лише ABCDEFG.()
як вхідні дані, і вхід ніколи не буде порожнім. Ви також можете отримати листи в малі літери, якщо цього бажаєте.
Це порожня музична скринька, довжиною 3:
.......
.......
.......
Як бачите, рядки мають 7 символів, а оскільки довжина музичного поля становить 3, у нас є 3 рядки. Тут є лише .
s, оскільки музична скринька порожня. Давайте покладемо в нього трохи музики!
Спочатку ми створюємо музичну скриньку. У цьому прикладі вхід буде CDAG.DAG
.
Довжина CDAG.DAG
становить 8, тому нам потрібна музична скринька довжиною 8:
.......
.......
.......
.......
.......
.......
.......
.......
Потім ми читаємо введення, по одному символу за раз, і розміщуємо O
на відповідному місці.
Перший символ є C
, і розташування кожної ноти еквівалентно цьому (я додав пробіли для наочності):
A B C D E F G
. . . . . . .
. . . . . . .
(and so on)
Якщо символом введення є а .
, ми просто надрукуємо порожній рядок.......
Отже, the C
буде третім персонажем разом. Давайте покладемо його в нашу музичну скриньку вгорі:
..O....
.......
.......
.......
.......
.......
.......
.......
Ми повторимо цей процес для всіх інших символів (текст у дужках лише для того, щоб показати вам замітку, ви не повинні виводити це):
..O.... (C)
...O... (D)
O...... (A)
......O (G)
....... (.)
...O... (D)
O...... (A)
......O (G)
Через те, як працюють музичні скриньки, якщо ми використовуємо інший символ O
, .
а не <insert newline here>
такий, як пробіл, у своєму виході, він не відтворюватиме правильну музику!
Це акорд:
(ACE)
Цей акорд вказує нам грати на нотах A
, C
і E
водночас. Ніколи не буде паузи (тобто а .
) в акорді.
Ось як було б написано:
O.O.O...
Ось як це може виглядати в музиці: B(ACE)D
Ви ніколи не отримаєте акорд в акорді, тобто це не буде дійсним: (AB(CD)EF)
або це:, A(B())
і акорд не буде порожнім, тобто це не буде дійсним:A()B
Ви ніколи не отримаєте недійсний вхід.
Приклади:
B(ACE)D
.O.....
O.O.O..
...O...
B
.O.....
GGABC
......O
......O
O......
.O.....
..O....
...
.......
.......
.......
A..F.C(DA).
O......
.......
.......
.....O.
.......
..O....
O..O...
.......
.(ABCDEF)
.......
OOOOOO.
Дозволений / провідний пробіл на виході дозволений.
Оскільки це код-гольф , виграє найкоротший код!
()
двічі (наприкладAB(CD)E(FG)
:) ??