올해는 930 년이며 그레고리 교회는 문제가 있습니다. 그들은 수천 페이지의 노래 음악을 가지고 있지만 문제는 모든 악보가 실제 조직 시스템 대신 더미에 던져 졌다는 것입니다.
Cartographers 'Guild의 사용자 게이머 프린터 이미지 .
교회는 모든 악보를 정리해야하므로 중세 소프트웨어 엔지니어를 고용하여이를 정리하기위한 프로그램을 작성했습니다. 귀하는 고용 된 소프트웨어 엔지니어입니다. 그러나 중세 시대의 편집 과정에는 느린 성서 필자 팀이 종이에 프로그램을 작성하는 과정이 포함됩니다. 서기관 팀이 코드를 컴파일하는 데 걸리는 시간을 줄이려면 프로그램을 가능한 작게 만들어야합니다.
교회는 성가 음악을 그들이 작곡 한 음계에 기초하여 조직하기를 원합니다. 교회의 성가 음악은 모두 도리안 음표 로 쓰여집니다 . 특정 음악에 대한 음표가 주어지면 프로그램은 도리안 음계를 출력합니다. 여기에서는 도리안 음계가 무엇인지 정확하게 설명하겠습니다. 이미 알고 있다면이 섹션을 건너 뛸 수 있습니다.
모든 멜로디에는 12 가지 음표가 있습니다. 여기 순서대로 있습니다 :
C C# D D# E F F# G G# A A# B
반음 (a를 이용하여 표현되는 S
) (B로부터 C 반음 업 다시 될 수 있도록) 감싸 오른쪽으로 한 단계 증가된다. 톤 (a를 이용하여 표현되는 T
) 두 반음이다. 예를 들어, F #의 반음은 G가됩니다. F #의 음은 G #이됩니다.
Dorian 스케일을 만들려면 목록의 음표에서 시작한 후 다음 패턴으로 올라가서 발생하는 음표를 나열합니다.
T, S, T, T, T, S
예입니다. A에서 시작합니다. Dorian 스케일의 메모는 다음과 같습니다.
A
B (up a tone)
C (up a semitone)
D (up a tone)
E (up a tone)
F# (up a tone)
G (up a semitone)
음계에는 A, B, C, D, E, F # 및 G라는 메모가 있습니다. A부터 시작 했으므로이를 도리안 음계를 A라고 합니다. 따라서 12 개의 서로 다른 도리안 저울이 있으며, 각각의 저울은 시작된 음표의 이름을 따서 명명되었습니다. 각기 다른 위치에서 시작하여 동일한 톤과 반음 패턴을 사용합니다. 내 설명이 일관성이 없다면 Wikipedia 를 참조하십시오 .
프로그램의 입력은 프로그램에 적합한 것 (예 : STDIN, 명령 행 인수, raw_input()
)에서 제공 될 수 있습니다. 변수에서 사전 초기화되지 않았을 수 있습니다. 입력은 곡의 멜로디를 나타내는 쉼표로 구분 된 음표 목록이됩니다. 반복되는 메모가있을 수 있습니다. 입력에 항상 다른 음표가있어 조각의 스케일을 결정적으로 추론 할 수 있습니다. 입력 예 :
B,B,D,E,D,B,A,G#,A,G#,E,D,F#,E,F#,E,F#,G#,A
프로그램의 출력은 string이어야합니다. Dorian scale in X
여기서 X는 스케일의 시작 참고입니다. 예제 입력의 출력 :
Dorian scale in B
이것을 B ( B C# D E F# G# A
) 의 도리안 스케일과 비교하면 멜로디의 모든 음이이 스케일 내에 있음을 알 수 있습니다. 이 경우 메모 C #은 사용되지 않습니다. 그러나 B Dorian을 올바른 키로 명확하게 식별하기에 충분한 메모가 있습니다. 우리가 시도하는 다른 스케일에 관계없이 스케일에 속하지 않는 멜로디에 대해 적어도 하나의 음표가 항상 있기 때문에 다른 Dorian 스케일은 맞지 않습니다.
이것은 코드 골프이므로 문자 수가 가장 적은 항목이 승리합니다. 질문이 있으면 의견을 물어보십시오.