직무
주어진 주파수로 튜닝되고 주어진 지점에서 눌려진 문자열에 대해 소리가 나지 않는 센트 수와 함께 소리를내는 프로그램을 작성하십시오.
간단하게하기 위해, 생성 된 사운드의 주파수와 그것이 눌려지는 오른쪽의 줄 길이는 반비례한다고 가정합니다.
참고 :이 작업은 기본 톤만 다루고 오버톤 / 기타 고조파는 다루지 않습니다.
입력
프로그램에는 두 가지 데이터가 제공됩니다.
해당 문자열을 나타내는 임의의 길이의 문자열입니다. 이 문자열은 X를 표시하여 문자열을 누른다.
[-----] is a string divided in six sections (five divisions). [--X--] is a string pressed at the exact center of the string. [X----] is a string pressed at 1/6 the length of the string. (Length used is 5/6) [-X--] is a string pressed at 2/5 of the length of the string. (Length used is 3/5)
오른쪽의 문자열 부분을 사용하여 음이 들린다 고 가정합니다
X
.- 문자열이 튜닝되는 빈도를 나타내는 숫자 (정수일 필요는 없음). 이 숫자의 정밀도는 소수점 이하 최대 4 자리입니다.
이는 주파수 사이에 존재할 것이다 전달된다고 가정 될 수있다 10 Hz
와 40000 Hz
.
입력은 원하는 형식으로 전달 될 수 있습니다. 답변에서 프로그램에 입력이 허용되는 방식을 지정하십시오.
산출
프로그램은 12 톤 균등 한 튜닝 시스템에서 가장 가까운 음표 *와 문자열로 표시된 소리가 가장 가까운 음에서 가장 가까운 음의 수를 출력해야합니다 (가장 가까운 센트로 반올림).
+n
센트는 n
노트 위 -n
/ 아래의 센트, 노트 / 플랫 아래의 센트 를 나타내는 데 사용해야합니다 .
노트는 과학적인 피치 표기법으로 출력되어야합니다. A4가로 조정되었다고 가정합니다 440Hz
. 평평하고 선명한 음표에는 b 및 #을 사용하십시오. 참고 : 날카 로우거나 평평하게 사용할 수 있습니다. 의 메모에 466.16Hz
대해 A#
또는 메모에 Bb
대해 출력 될 수 있습니다.
출력에 이전에 지정된 두 개의 정보 만 포함되어있는 한 출력 형식은 사용자에게 달려 있습니다 (즉, 가능한 모든 단일 출력을 인쇄하는 것은 허용되지 않음).
* 가장 가까운 음표는 센트 수로 측정 된 입력에 의해 표시되는 소리에 가장 가까운 음표를 의미합니다 (따라서 음표 내에있는 음표 50 cents
). 소리가 50 cents
반올림 후 두 개의 다른 음표에서 멀어지면 두 음표 중 하나가 출력 될 수 있습니다.
예
프로그램은 다음 예제뿐만 아니라 모든 경우에 작동해야합니다.
Output Input Frequency Input String
A4, +0 cents 220 [-----X-----]
A5, +0 cents 220 [--------X--]
D5, -2 cents 440 [--X--------]
B4, -49 cents 440 [X----------]
A#4, +19 cents* 314.1592 [X-]
Eb9, +8 cents* 400 [-----------------------X]
Eb11,+8 cents* 100 [--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------X]
D#1, +49 cents* 10 [--X]
A0, -11 cents 11.7103 [---X--]
* 날카 롭거나 평평하게 출력 될 수 있습니다.
잠재적으로 유용한 링크
이것은 코드 골프 가장 짧은 답변이 이깁니다.
[-X--]
, 문자열은 4 곳 (따라서 5 부분)으로 나뉘어지고 두 번째 부분에서 눌려집니다. 따라서을 눌렀으며 2/5
사용 된 길이는 3/5
입니다.
-
기본적으로 부서의 위치를 나타냅니다. 설명해 주셔서 감사합니다!
[--X--]
문자열 에 따르면 이 논리x
를 따르면 마지막 문자열은[-X--]
3/8 (2/5 아님)에있을 것입니다. 아니면 내가 잘못 이해하고 있습니까?