仕事
所定の周波数にチューニングされ、所定のポイントで押し下げられたストリングの、チューニングのずれたセント数とともに、発音されたノートを決定するプログラムを記述します。
簡単にするために、生成される音の周波数と、押された場所の右側の弦の長さが反比例していると仮定します。
注:このタスクでは、基音のみを扱い、倍音やその他の倍音は扱いません。
入力
プログラムには2つのデータが渡されます。
問題の文字列を表す、任意の長さの文字列。このストリングは、ストリングが押されるべき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
で出力されます。
出力に以前に指定された2つの情報のみが含まれている限り、出力の形式は自由です(つまり、可能なすべての出力を印刷することはできません)。
*最も近い音とは、入力によって示される音に最も近い音を指し、セント単位で測定されます(したがって、50 cents
音の中にある音)。サウンドが50 cents
2つの異なるノートから離れている場合(丸め後)、2つのノートのどちらかが出力される可能性があります。
例
プログラムは、以下の例だけでなく、すべてのケースで機能するはずです。
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番目の分割で押されます。したがって、それはで押され2/5
、使用される長さは3/5
です。
-
基本的に部門の位置を表しています。説明していただきありがとうございます。
[--X--]
ストリングが配置されているディビジョンの中央で押されていますがx
、[-X--]
このロジックに従うと、最後の例は3/8(2/5ではありません)になります。または私は何か間違ったことを理解していますか?