您的任务是将一系列字符(音乐)作为输入(在函数或程序中),并按照音乐盒中的外观打印(或返回)音乐。
您将只接收字符ABCDEFG.()
作为输入,并且输入永远不会为空。如果您愿意,您可能还会收到小写字母。
这是一个空的音乐盒,长度为3:
.......
.......
.......
如您所见,这些行的长度为7个字符,并且由于音乐盒的长度为3,因此我们有3行。.
因为音乐盒为空,所以这里只有。让我们放一些音乐吧!
首先,我们创建音乐盒。在此示例中,输入将为CDAG.DAG
。
的长度CDAG.DAG
为8,因此我们需要一个长度为8的音乐盒:
.......
.......
.......
.......
.......
.......
.......
.......
然后,我们读取输入,一次输入一个字符,并将其放置O
在其相应位置。
第一个字符是C
,每个音符的位置与此等效(为清楚起见,我添加了空格):
A B C D E F G
. . . . . . .
. . . . . . .
(and so on)
如果输入字符是.
,则我们只打印一个空行.......
因此,这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)
或this 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)
:)吗?