ガイドライン
仕事
文字列またはリスト/配列として入力された2つのノートが与えられた場合、それらが離れている半音の数(ノート自体を含む)を計算し、数値として出力します。
半音の説明:
半音は、キーボードを1段上げまたは下げます。例は、CからC#です。以下に示すように、音符Cは白い音符の上にあり、C#はその1つ上の黒い音符です。半音は、次の場合を除き、黒の音符から次の白の音符に上下にジャンプします。
- BからC
- CからB
- EからF
- FからE
例
'A, C' -> 4
'G, G#' -> 2
'F#, B' -> 6
'Bb, Bb' -> 13
ルール
- 2つのノート間の最大距離は13半音です。
- 2番目に入力されたノートは常に最初に入力されたノートの上になります。
- 入力は、文字列または配列/リストとして取得できます。あなたは文字列としてそれを取る場合は、ノートがなり、カンマ区切り(例えば
String -> 'A, F'
、Array -> ['A', 'F']
)。 - 常に2つの有効なメモが与えられると仮定できます。
- シャープはと表示され
#
、フラットはと表示されますb
- コードは調和的な同等物をサポートする必要があります(例:F#とGbの両方をサポートする必要があります)
- コードは、名前の付いたメモをサポートする必要はありませんが、シャープまたはフラットなしで名前を付けることができます(つまり、E#やCbをサポートする必要はありません)。ただし、コードでサポートされている場合はボーナスポイントです。
- コードでダブルシャープまたはダブルフラットをサポートする必要はありません。
- 同じ音符または同じ音高(たとえば、「Gb、Gb」または「A#、Bb」)の両方を取得した場合、2番目の音は最初の音よりも正確に1オクターブ上ではないと想定できます。
- これはコードゴルフであるため、バイト数が最も少ない答えが優先されます。
Cb
またはのようなメモに対応する必要がありE#
ますか?ダブルシャープ/フラットはどうですか?
(X, Y]
、CからC#が1半音、CからCが12半音として表されます。
G -> G#
両方が含まれているため、2を取得します。