在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 *源代码的字节数。
- 这是代码高尔夫球,因此最短的代码获胜。