注意:Anders Kaseorg警告我,这可能是另一个先前问题的重复。看来是这样,很抱歉,我在发布此问题之前没有找到该问题。尽管如此,这个问题只收到一个答案,这个答案比较简单,以防万一大家都想尝试一下。不过,我将了解该问题是否最终被标记为重复。
挑战
给定这样的输入:
8g 8Df 4cs 2C 1A
编写产生如下输出的最短程序/函数:
/\ -o-
| |
---|-|---------------------------------------------------|-|
|/ | |
---/|--------|\----b-*-----------------------------------|-|
/ | | | | o | |
-|--|--------|------|-----------------|------------------|-|
| (| \ | | | | | |
-|--|--)----*-------|/---------|------|------------------|-|
\ | / | | | |
-----|-------------------------|-------------------------|-|
| |
*_/ #-*-
规则
输出必须由五行工作人员组成,开始时必须完全像上面所示的那样绘制G型谱,并与工作人员的左侧对齐,并在工作人员启动后仅留下一列。
/\
| |
---|-|--
|/
---/|---
/ |
-|--|---
| (| \
-|--|--)
\ | /
-----|--
|
*_/
^
Single column
注释必须以a *
或o
字符开头,具体取决于其类型。
必须有分离的每正好八列*
或o
字符:
/\ -o-
| |
---|-|---------------------------------------------------|-|
|/ | |
---/|--------|\----b-*-----------------------------------|-|
/ | | | | o | |
-|--|--------|------|-----------------|------------------|-|
| (| \ | | | | | |
-|--|--)----*-------|/---------|------|------------------|-|
\ | / | | | |
-----|-------------------------|-------------------------|-|
| |
*_/ #-*-
↑ ↑ ↑ ↑ ↑ ↑ ↑
8 columns of separation
如图所示,工作人员必须使终结器与右侧对齐。终止符的左栏必须与最后一个音符分隔8列。
输入将是包含注释的单个字符串(至少一个,没有空输入),每个用空格隔开(您可以认为每个注释都是正确的,因此无需检查错误)。您还可以将输入作为字符串数组,并在数组中的每个元素上加上一个注释。每个音符,第一个字符将是音符长度(的分母1
为一个全音符/ semibreve,与开始o
; 2
用于二分音符/微量,开始用o
; 4
用于四分音符/四分音符,开始于*
;以及8
用于第八音符/颤音,以*
)。第二个字符将是音符(请参见下表),第三个可选字符将是f
或(F
用于平面音符和/ s
或S
尖锐音符)。
--- A (ledger line)
G
-------- F
E
-------- D
C
-------- b
a
-------- g
f
-------- e
d
--- c (ledger line)
显然,输入必须注意音符的大小写,但是您可以选择f
和s
修饰符的大小写。
注意,c
并且A
必须增加两条-
(分类帐行),每边各增加一条,因为它们必须扩展人员。注意d
和G
不在工作人员之列,但不需要分类帐行。
展平或尖锐票据必须添加b
或#
在音符的左侧两个位置。
茎(如果有)必须用4条竖线绘制。从Notes b
及以上必须提请干向下,并在音符的左侧。a
下方和下方的音符必须向上且在音符的右侧绘制茎。八分音符必须始终向右且完全如图所示添加标志,并且如果连续有多个,则不需要将其标记。
--------------------------
-----|\----b-*------------
| | |
-----|------|-------------
| | |
----*-------|/---------|--
↑↑ |
----||------↑↑---------|--
|| || |
|| || #-*-
|\ |\ ↑↑
| Stem | Note | Stem
Note Stem Note
和往常一样,您的程序/函数可以直接绘制输出或返回字符串,字符串数组,字符矩阵或任何其他合理格式。
有用的链接
这是代码高尔夫球,因此每种语言中最短的程序/功能可能会获胜!
奖励:尝试用著名的旋律写一些例子,让每个人都猜出它是哪种旋律!