배경
서양 음악에서는 모든 단일 음표에 이름이 지정되어 있습니다. 각 옥타브에는 "CC # / Db DD # / Eb EFF # / Gb GG # / Ab AA # / Bb B C"순서로 12 개의 고유 한 음표가 있습니다. 여기서 마지막 C는 첫 번째 옥타브 위의 1 옥타브입니다.
다른 옥타브의 음을 구별하기 위해 음표 이름 끝에 숫자 (이 숫자는 한 자릿수로 제한됨)가 추가됩니다. 따라서 C5는 C4보다 1 옥타브 높은 음입니다. Bb6은 B5 이상입니다.
중요한 사실은 B5와 C6은 서로 바로 옆에있는 음표이고 C0과 B9는 가장 낮고 가장 높은 음표입니다.
두 음표 사이에는 반음의 수인 거리가 있습니다. Bb4는 B4 아래의 반음이며, 그 자체는 C5 아래의 반음입니다. 한 옥타브에는 12 개의 반음이 있으므로 Bb4는 A # 3보다 12가 떨어져 있습니다 (한 음표의 이름이 두 개까지 될 수 있음).
도전
STDIN에서 음악 메모 목록을 가져 와서 간격 변경 목록을 STDOUT으로 인쇄 할 수있는 가장 짧은 프로그램을 작성해야합니다.
공백으로 구분 된 음악 노트 목록이 입력됩니다. 각 메모는 대문자 AG, 선택적 b 또는 # 기호 및 한 자리 숫자로 구성됩니다. E # / Fb 또는 B # / Cb를 다루지 않아도됩니다. 입력 예 :
C4 D4 E4 F4 G4 A4 B4 C5 C4
출력은 공백으로 구분 된 정수 목록으로, 각 연속 음표 사이의 거리를 나타내며 항상 + 또는-접두사가 붙어 음표가 이전 음표에 비해 오름차순인지 내림차순인지를 나타냅니다. 입력 된 음표보다 항상 적은 수의 음이 출력됩니다. 위 입력에 대한 예제 출력 :
+2 +2 +1 +2 +2 +2 +1 -12
더 많은 입력 예 :
E5 D#5 E5 B4 E5 F#5 E5 B4
C0 B0 Bb1 A2 G#3 G4 F#5 F6
G4 Ab4 Gb4 A4 F4 A#4
그리고 해당 출력 :
-1 +1 -5 +5 +2 -2 -5
+11 +11 +11 +11 +11 +11 +11
+1 -2 +3 -4 +5
규칙 및 제한
우승자는 소스 코드의 문자 수에 따라 결정됩니다
프로그램은 인쇄 가능한 ASCII 문자로만 구성되어야합니다.
음악이나 소리와 관련된 내장 기능을 사용할 수 없습니다
그 외에는 표준 코드 골프 규칙이 적용됩니다
+0
하거나-0
또는0
두 개의 동일한 노트?