참고 : Anders Kaseorg는 이것이 이전 의 다른 질문 과 중복 될 수 있다고 경고합니다 . 그렇게 보입니다.이 질문을 게시하기 전에 해당 질문을 찾지 못했습니다. 그럼에도 불구하고, 그 질문은 단 하나의 답변을 받았으며, 여러분 모두가 이번에 시도하고 싶을 경우를 대비하여이 질문은 더 간단합니다. 그러나이 질문이 중복으로 표시되면 이해할 것입니다.
도전
다음과 같은 입력이 주어집니다.
8g 8Df 4cs 2C 1A
다음과 같이 출력을 생성하는 가장 짧은 프로그램 / 기능을 작성하십시오.
/\ -o-
| |
---|-|---------------------------------------------------|-|
|/ | |
---/|--------|\----b-*-----------------------------------|-|
/ | | | | o | |
-|--|--------|------|-----------------|------------------|-|
| (| \ | | | | | |
-|--|--)----*-------|/---------|------|------------------|-|
\ | / | | | |
-----|-------------------------|-------------------------|-|
| |
*_/ #-*-
규칙
출력은 위에 표시된대로 정확하게 G- 음자리표 그리기로 시작하여 직원 왼쪽에 정렬되고 직원 시작 후 단일 열을 남겨 두는 5 줄 직원으로 구성되어야합니다.
/\
| |
---|-|--
|/
---/|---
/ |
-|--|---
| (| \
-|--|--)
\ | /
-----|--
|
*_/
^
Single column
노트는 유형에 따라 a *
또는 o
문자로 시작해야합니다 .
문자 *
또는 o
문자 마다 정확히 8 개의 열이 있어야합니다 .
/\ -o-
| |
---|-|---------------------------------------------------|-|
|/ | |
---/|--------|\----b-*-----------------------------------|-|
/ | | | | o | |
-|--|--------|------|-----------------|------------------|-|
| (| \ | | | | | |
-|--|--)----*-------|/---------|------|------------------|-|
\ | / | | | |
-----|-------------------------|-------------------------|-|
| |
*_/ #-*-
↑ ↑ ↑ ↑ ↑ ↑ ↑
8 columns of separation
직원은 예에 표시된대로 종단자가 오른쪽에 정렬 된 상태로 끝나야합니다. 터미네이터의 왼쪽 막대는 마지막 메모와 8 개의 열로 분리되어야합니다.
입력은 노트를 포함하는 단일 문자열 (적어도 하나의 빈 입력은 없음)이며 공백으로 구분 된 각 문자열입니다 (모든 노트는 올바른 것으로 간주 할 수 있으므로 오류를 확인할 필요가 없습니다). 배열의 요소 당 메모가있는 문자열 배열로 입력을받을 수도 있습니다. 각 참고, 첫 문자 음표 길이 (분모 것 1
A의 전체적인 음 / semibreve 로 시작을 o
, 2
A에 대한 분 음표 / 미님 와, 시작 o
; 4
A의 분 음표 / 갈고리 와, 시작 *
및 8
위한 여덟째 note / quaver 로 시작*
). 두 번째 문자는 (다음 표 참조) 노트 될 것이며, 세 번째, 옵션 문자가 될 것입니다 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 개의 수직 막대로 그려야합니다. 에서 노트 b
와 줄기 아래쪽으로 그려야 위 노트의 왼쪽에. a
아래와 아래의 메모 는 스템을 위와 메모의 오른쪽에 그려야합니다. 쿼 버는 항상 오른쪽과 같이 표시된대로 플래그를 추가해야하며, 여러 개의 행이있을 경우 빔을 낼 필요가 없습니다.
--------------------------
-----|\----b-*------------
| | |
-----|------|-------------
| | |
----*-------|/---------|--
↑↑ |
----||------↑↑---------|--
|| || |
|| || #-*-
|\ |\ ↑↑
| Stem | Note | Stem
Note Stem Note
평소와 같이 프로그램 / 기능은 출력을 직접 그리거나 문자열, 문자열 배열, 문자 행렬 또는 기타 적절한 형식을 반환 할 수 있습니다.
유용한 링크
- 음악 기호 목록입니다 .
- 문자 표기법 .
이것은 code-golf 이므로 각 언어마다 가장 짧은 프로그램 / 기능이 이길 수 있습니다!
보너스 : 유명한 멜로디로 예제를 작성하고 모든 멜로디를 추측하도록하십시오!