给定ascii乐谱,您必须能够输出音符及其相应的长度。乐谱将包含5到15个音符(含在内),并记录在五线谱上。冷却壁由五条水平线组成,水平线由-个(减号)字符组成,并由空格隔开。五线谱的底线等效于音符“ E”。紧靠底线上方的空格线表示“ F”,并且其底线的间距高于其下方的“ E”。这继续如下。请注意,在重新从“ A”开始之前,音符只会升至“ G”。见下文:
F ----------
E
D ----------
C
B ----------
A
G ----------
F
E ----------
请注意,输入中不包含字母。音符使用ao(小写字母ooh)字符叠加在五线谱的顶部,以指示“音符头”。该音符头指示音符的频率,因此如上所述,按字母顺序表示。例如,在乐谱上的音符如下所示表示“ A”:
----
----
----
o
----
----
像上面的“ A”一样,音符被称为“整个音符”,并且将被演奏一整拍。其他持续时间可以通过从音符中升起的“茎”指示,并且介于零和三个“标志”之间。茎由三部分组成| (竖线或竖线)字符堆叠在音符头上方。没有标志的茎被认为是“四分音符”,并且每节拍演奏四分之一。标志是\(反斜杠)字符,并位于茎的右侧。每个词干将音符演奏的时间减半。每个音符的长度为以下之一:整音符,四分音符,八分音符,十六分音符或三十秒音符。每种类型的便笺如何查找A:
--------------------
----|---|\--|\--|\--
| | |\ |\
----|---|---|---|\--
o o o o o
--------------------
--------------------
将多个音符放在一起可以得到一个分数。每个注释可以被认为是四个字符宽,每个四个字符块的第一列中都有一个注释。例如 :
|\
----|\--|\----------
|\ | |\
----o---|---o---|\--
| o |
|---------------o---
|
o-------------------
--------------------
上面的示例按顺序包含以下音符:四分音符“ G”,三十秒音符“ D”,八分音符“ C”,整音符“ D”和十六分音符“ B”。输出中的每个注释应采用字母/长度格式,其中字母为AG,长度为与整个注释相比,注释长度的一部分。作为例外,如果注释是整个注释,则不应打印长度和/字符。输出中的每个音符应以单个空格分隔。因此,对于以上得分,您的代码应输出以下内容:
G/4 D/32 C/8 D B/16
- 注释将在以下范围内:EFGABCDEF。请注意,只有字母需要打印,八度会被忽略。
- 请注意,输入行数从9到12不等,因为D行或更高行上四分之一或更少时间的音符将需要更多行才能完全显示。
- 在这种情况下,没有半音符。
最短的代码获胜(空格不计算在内)。
编辑:修复了一个输入中间距的错误。
一些样本输入:
|\
----|\--|-------------------
|\ | |
|---|---o---------------o---
| o |\
o---------------|\--|\------
|\ |\ |\
------------|\--|\--o-------
|\ o
------------o---------------
输出:B / 8 C / 8 D / 8 E / 32 F / 32 G / 32 D
----------------o-------------------
o
------------o-----------------------
o
--------o---------------------------
o
----o-------------------------------
o
o-----------------------------------
输出:EGBDFFACE
|\
|\
|\
------------o-------|-----------
| o | |\
|---|\--------------|---|\------
| | o |\
o---|---|\--------------o---|\--
o |\ |\
--------|\------------------|---
o o
--------------------------------
输出:B / 4 A / 8 F / 32 F / 32 EC / 4 B / 32 F / 16