在temp文件夹的深处挖掘,您会发现一些钢琴作品。不幸的是,这些作品只写有音符名称和时长,并且您只能访问文本终端。因此,您的任务是编写一个程序以将合成显示为ASCII艺术。
输入项
您的程序应接受两个字符串作为输入。第一个字符串代表高音谱号的音符(带有高音谱号),第二个字符串代表低音谱号的音符。
这些笔记将以科学的音高符号传递。顶部人员的笔记总是会之间C4
和C6
包容性。底层员工的笔记总是会之间C2
和C4
包容性。
每个音符都将拿出一个时间,这将是一个:1
,2
,4
,8
。它们分别代表整个音符(半缩音符),半音符(最低音符),四分音符(钩针)和八分音符(颤音)。
其他持续时间的注释将永远不会出现在输入中。
您可以自行决定如何将音符和持续时间分开,以及如何将每个音符与输入中的其他音符分开。以下是高级职员的样本输入:
E4/4 A4/8 C#5/8 E5/2
在此,音符之间用空格隔开,并且持续时间与音符之间用正斜杠分隔。这些距离不是固定的,您可以选择更改或完全省略。
您可以假设每位职员至少有一张便条。输入中没有休止符。
输出量
您的程序将分数输出为ASCII艺术作品,并符合以下说明。
谱号应该是输出左侧的第一件事(两个谱号之间的距离不应更改):
^
| |
------|/----
/
-----/|-----
/ |
---/--__----
| / \
---\-\|-|---
\ | /
------|-----
|
\_/
----___-----
/ \ |
---\---|----
| |
-------/----
/
-----/------
------------
如果音符的条干(圆旁边的垂直线)应指向五线谱的中线以下,则应指向上方。如果音符在谱线的中线上方,则应指向下方。如果音符在中线,则词干可以指向任一方向。(唯一的例外是奖金,并且在连接八分音符时发生,稍后将进行说明)。茎应该从圆的上面/下面的线开始,并且要6
高。
除整个音符外,所有类型的音符都有词干。八分音符的标志由不同行上的两个正斜杠表示(请参见下面的示例音符)。
填充的音符头(用于四分音符和八分音符)由表示(@)
。空的音符头(代表一半和全部音符)由表示( )
。
如示例音符所示,应放置意外字符(竖琴,平底锅,自然物体),在意外字符的右侧和音符头的左侧之间恰好一个字符。
必要时应使用分类帐行,7
其长度应为字符,并以音符头为中心。
每个音符应为12
字符宽。
示例注释:
|_
|_| ( )
| |------
|
------------ ---------|-- ------------ ------------ ------------
|
------------ ---------|-- ---|-------- ------------ ------------
(@) _|_|_ | |_
-----|------ _|_|_-( )--- ---|/-(@)--- ------------ ---------|\-
| | | | | \
-----|------ ------------ -----|------ ------------ ---------|--
| | |
-----|------ ------------ -----|------ ------------ ---------|--
| | / |
|/ --(@)--
quarter note half note eighth note whole note eighth note
sharped flatted natural
如果该注释是四分音符,则在12个字符的注释之后,将2 * 12 - 12 = 12
字符保留为空白(或者
-
根据行而定)。如果音符是半音符,则将4 * 12 - 12 = 36
字符留空。如果注释是整个注释,请将8 * 12 - 12 = 84
字符留空。不要为八分音符添加多余的字符。
在每个小节的末尾(谱号或小节线之后的96个字符),输出一条小节线。这是由下降的最上面和最下面的线(含)之间的每一个字符,并替换做用
|
,并-
用+
。(请参阅问题底部的示例输出)。
在乐曲的末尾,通过连续输出3条小节线,但在第一和第二个之间有一个空格,来输出音乐结尾。那是:
+-++
| ||
+-++
| ||
. ..
. ..
请注意,锋利的,平坦的和自然的持续到小节结束。自然符号只能用于抵消先前以相同度量使用的尖锐或平坦。
出于此任务的目的,锋利,平坦和自然的音调只会影响一个八度音阶和一个谱号中的音符(A5上的锐化不会导致A4锐化,而高级职员中C4上的平坦不会导致C4在最底端的员工要扁平化)。
仅用于奖金的信息
奖金包括正确连接八分音符。
当有两个连续的八分音符与四分音符节拍对齐时(换句话说,第一个八分音符之前的字符数是24的倍数),则将连接两个八分音符。
让便笺A是离职员中间最远的便笺。如果两个音符是从中间的距离相等,无论是注可能注意到一个。让其他的注意事项在笔记乙。
方向都根茎应注意干的方向一个。
其中一个音符的主干应该6
高一些(一般来说,通常是茎),并且另一个音符的主干应该延伸到另一个音符的末尾。
茎应与相连_
。
示例连接的八分音符:
___________
| |
| |
| |
| | --(@)--
| | | |
------------------------ ---|_----|-----------|-- -----|------------------
|/ (@) | | |_
------------------------ ---------------------|-- -----|--------|_|-(@)---
(@) _|_|_ | | ||
-----|------_|_|_-(@)--- ---------------------|-- -----|-----------|------
| | | | | | |
-----|-----------|------ ---------------------|-- -----|-----------|------
| | | | |
-----|-----------|------ ------------------(@)--- -----|___________|------
| |
|___________|
输入和输出示例
输入:
A#4/4 G#4/4 F#4/2 A#4/4 G#4/4 F#4/2 F#4/8 F#4/8 F#4/8 F#4/8 G#4/8 G#4/8 G#4/8 G#4/8 A#4/4 G#4/4 F#4/2
A#3/4 G#3/4 F#3/2 A#3/4 G#3/4 F#3/2 F#3/2 G#3/2 F#3/4 E#3/4 F#3/2
输出:
^
| | | | |
------|/-------------|-----------------------|--------------------------------------------------------------+---------|-----------------------|--------------------------------------------------------------+----------___________-------------___________------------|\----------|\----------|\----------|\-+---------|-----------------------|--------------------------------------------------------------+-++
/ | | | | | | | | | | | | | \ | \ | \ | \| | | | | ||
-----/|--------------|-----------------------|-----------------------|--------------------------------------+---------|-----------------------|-----------------------|--------------------------------------+---------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|--+---------|-----------------------|-----------------------|--------------------------------------+-++
/ | | | | | | | | | | | | | | | | | | | | | | ||
---/--__----_|_|_----|-----------------------|-----------------------|--------------------------------------+_|_|_----|-----------------------|-----------------------|--------------------------------------+---------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|--+_|_|_----|-----------------------|-----------------------|--------------------------------------+-++
| / \ _|_|_ (@) _|_|_ | | |_|_|_ (@) _|_|_ | | | | | | | _|_|_ | | | | |_|_|_ (@) _|_|_ | | | ||
---\-\|-|----|-|--------------------_|_|_-(@)---------------_|_|_----|--------------------------------------+-|-|--------------------_|_|_-(@)---------------_|_|_----|--------------------------------------+_|_|_----|-----------|-----------|-----------|--_|_|_-(@)---------(@)---------(@)---------(@)---+-|-|--------------------_|_|_-(@)---------------_|_|_----|--------------------------------------+-++
\ | / | | _|_|_ ( ) | | | _|_|_ ( ) |_|_|_ (@) (@) (@) (@) | | | | | _|_|_ ( ) | ||
------|------------------------------------------------------|-|--------------------------------------------+-------------------------------------------------|-|--------------------------------------------+-|-|--------------------------------------------------------------------------------------------+-------------------------------------------------|-|--------------------------------------------+-++
| | | | | ||
\_/ | | | | ||
| | | | ||
| | | | ||
| | | | ||
| | | | ||
_|_|_ |_|_|_ | | | ||
----___-----_|_|_-(@)---------------_|_|_-------------------------------------------------------------------+_|_|_-(@)---------------_|_|_-------------------------------------------------------------------+------------------------------------------------_|_|_-------------------------------------------+------------------------------------------------------------------------------------------------+-++
/ \ | | | | _|_|_ (@) _|_|_ | | | | _|_|_ (@) _|_|_ |_|_|_ _|_|_ ( ) |_|_|_ | ||
---\---|---------|-------------------|-|-|------------------_|_|_-( )---------------------------------------+-----|-------------------|-|-|------------------_|_|_-( )---------------------------------------+_|_|_-( )----------------------------------------|-|-|------------------------------------------+_|_|_ (@)---------------_|_|_-------------------------( )---------------------------------------+-++
| | | | | | | | | | | | | | | | | | | | | | _|_|_ (@) | | ||
-------/---------|-----------------------|-----------------------|------------------------------------------+-----|-----------------------|-----------------------|------------------------------------------+-----|-----------------------------------------------|------------------------------------------+-----|-------------------|-|-|-----------------------|------------------------------------------+-++
/ | | | | | | | | | | | | | | | ||
-----/-----------|-----------------------|-----------------------|------------------------------------------+-----|-----------------------|-----------------------|------------------------------------------+-----|-----------------------------------------------|------------------------------------------+-----|-----------------------|-----------------------|------------------------------------------+-++
| | | | | | | | | | | | | ||
-----------------------------------------------------------------|------------------------------------------+-----------------------------------------------------|------------------------------------------+-----|------------------------------------------------------------------------------------------+-----|-----------------------|-----------------------|------------------------------------------+-++
|
为了演示,在第三小节中,F#
八分音符已连接,而G#
八分音符未连接。您的程序应在适用的情况下连接八分音符(以获取奖金),或将其断开连接。
其他资讯
- 任意数量的尾随空白/行都是可以接受的。
- 谱号之前不应有多余的空格,音符之间也不应有空格。在输出之前/之后可以发射任意数量的空白行。
- 连接八分音符的好处是0.75 *源代码的字节数。
- 这是代码高尔夫球,因此最短的代码获胜。