이것은 음악 의 반대입니다 .이 화음에는 무엇이 있습니까? 주어진 화음에 음표를 인쇄하는 것입니다. 이번에는 입력이 코드의 음표 목록이며, 작업은 코드를 출력하는 것입니다.
귀하의 프로그램은 다음의 3 가지 코드를 지원해야합니다. 예는 근음 C로 제공됩니다. 다른 근음이있는 코드는 모든 음이 회전 된 동일한 코드이므로 C는 해당 근음이됩니다. 예를 들어 Dmaj는 D, F # 및 A로 구성됩니다.
C C#D D#E F F#G G#A A#B
Db Eb Gb Ab Bb
Cmaj C E G
Cm C D# G
Caug C E G#
Cdim C D# F#
Csus4 C F G
Csus2 C D G
Caug는 Eaug 및 G # aug와 동일하며 Csus4는 Fsus2와 동일합니다. 둘 중 하나를 출력 할 수 있지만 모두 출력하면 보너스가 있습니다.
보너스에 대한 일곱 번째 화음은 다음 표에 나열되어 있습니다.
C C#D D#E F F#G G#A A#B
Db Eb Gb Ab Bb
C7 C E G A#
Cm7 C D# G A#
Cmmaj7 C D# G B
Cmaj7 C E G B
Caug7 C E G# A#
Cdim7 C D# F# A
규칙
- 완전한 프로그램이나 함수를 작성할 수 있습니다.
- 입력은 공백 또는 다른 편리한 문자로 구분 된 메모 목록입니다. 또한 문자열 배열 (함수 인수에서 입력을받는 경우) 또는 해당 배열의 문자열 표현 일 수 있습니다.
- 입력이 특정 순서 일 필요는 없습니다.
- 입력에 메모가 중복되었을 수 있습니다. 그것들 중 하나만있는 것과 같은 방식으로 취급해야합니다.
- 출력은 코드의 이름입니다. 여러 개의 이름을 출력 할 경우 동일한 입력 규칙이 적용됩니다.
- 입력이 지원되는 코드가 아닌 경우에는 그대로 메모를 인쇄해야합니다. 귀하의 프로그램은 위의 표에없는 다른 코드도 지원할 수 있습니다 (유효하지만 보너스는 없습니다).
- Wikipedia 기사에 나열된 다른 표기법을 사용할 수 있습니다 . 그러나
C
C 메이저로 선택한 경우 , 어느 쪽이든 사람이 읽을 수있는 접두사를 추가하여 단일 음표로 코드를 구별해야합니다. - 이 작업에 내장 기능을 사용할 수 없습니다 (있는 경우).
- 이것은 코드 골프입니다. 바이트 단위의 최단 코드가 이깁니다.
예
- 입력 :
C D# G
출력 :Cm
. - 입력 :
C Eb G
출력 :Cm
. - 입력 :
C Eb F#
출력 :Cdim
. - 입력 :
F A C#
출력 :Faug
,Aaug
,C#aug
,Dbaug
또는Faug Aaug C#aug
,Faug Aaug Dbaug
임의의 순서로한다. - 입력 :
F D F F F F A A F
출력 :Dm
. - 입력 :
C D
출력 :C D
.
보너스
- 해석이 둘 이상인 경우 모두 인쇄하면 -30 (aug, sus4 / sus2 및 dim7).
- 일곱 번째 화음도 지원하는 경우 -70입니다.
- MIDI 입력을 받아들이고 수신 한 각 코드를 인쇄하면 -200입니다. 노트를 동시에 시작하거나 종료 할 필요는 없습니다. 충돌하거나 작동을 멈추지 않는 한 중간 상태에서 발생하는 일을 결정합니다. 퍼커션 채널에 음표가 없다고 가정 할 수 있습니다 (또는 편리한 경우 하나의 채널 만 있음). 특히 플랫폼에 따라 다를 경우 테스트를 위해 텍스트 (또는 배열) 버전을 제공하는 것이 좋습니다.
입력이 평평하거나 날카로운 것만 사용할 수 있습니까? B #와 같은 메모를 처리해야합니까?
—
feersum
@feersum 아파트를 가질 수 있습니다 (-200 보너스를 청구하지 않는 한). 몇 가지 예를 추가했습니다. 당신은 핸들이 필요하지 않습니다
—
jimmy23013
B#
, Cb
등
당신은 말합니다
—
Gareth
Csus4 is the same as Gsus2
. 당신은 Csus2 is the same as Gsus4
그렇지 않나요?
@Gareth ... 예. 결정된.
—
jimmy23013