GO FOR IT(4)旋律に隠された特徴

GO FOR IT 4問目。旋律に隠された特徴

問題

ある旋律演算器を考えてみましょう。この演算器は、単音から構成される旋律を入力すると、ある特徴量を算出し、出力することができます。
この演算器に、以下の3つの譜面を入力してみました。

すると、
・A)の特徴量と B)の特徴量は、異なっていました。
・A)の特徴量と C)の特徴量は、同じでした。


こちらのデータ形式を用いて、以下の課題の解を求めてください。
i)上記仕様を満たすこの演算器を設計し、コーディングしてください。
ヒント) 隣り合う音符同士の関係に注目してください。

ii)以下の三つの旋律 D)、E)、F)を設計した演算器に入力した際、B)と同じ特徴量が出力されるものを回答してください。

iii)以下の条件を満たす出力を行う旋律生産器(すなわち作曲器)を設計し、コーディングしてください。求められた旋律をi)で設計した演算器に入力できる文字列として回答してください。
・以下の旋律 G)と同じ特徴量を持ちます。
・譜面上の位置 -2 で与えられるGの音ではじまり、同じ音で終わります。
・旋律の長さは、全音符3つ分よりも長く、高々全音符4つ分までとします。

データ

演算器に旋律を入力するには、譜面を以下の規則に従って文字列に変換する必要があります。
1. 1つの音符は3つの属性
「楽譜上の位置(高さ)、音符の種類(長さ)、臨時記号(高さの補正情報)」 を持ちます。
2. 属性と属性は”:”で区切られます。
3. 音符と音符は”,”で区切られます。
旋律の最後には”,”を必要としません。文字列の終端を以て旋律の終端とします。
4. 楽譜上の位置は第三線を原点(0)とし、第三間を+1,第四線を+2……、第二間を-1、第二線を-2……、というように正負の値で表現されます。
高低の範囲は、一般的なピアノの鍵盤上に存在する音(7オクターブ+短三度)に限るものとします。
5. 音符の種類は{全/二分/四分/八分/十六分/三十二分}音符を{1/2/4/8/16/32}で表します。
符点がついた場合は”.”を添えるものとします{1./2./4./8./16./32.}。
6. 臨時記号は、“s” シャープ、“x” ダブルシャープ、“b” フラット、d” ダブルフラットで表します。
この属性を持たない場合、その音符はナチュラルがついているものとします。
7. 休符については、高さが無いものとし、長さは音符と同様に表します。
8. 以上の規約で言及されない(下記変換例の楽譜に登場しない)楽譜上の記号、表現については、ここでは入力の対象外とします。すなわち、この問いにおいて考慮する必要はありません。

例)

= 0:1:,1:2:s,2:4.:x,1:8:,:8:,-1:16.:b,-2:32:d
設問中の各譜面を表す文字列は、上記の規則に従い次のようになります。
A)-3:4:,-2:4:,-1:4:,0:4:b,-1:4:,-2:4:,-3:4:,:4:,-1:4:,0:4:b,1:4:,2:4:,1:4:,0:4:b,-1:4:,:4:
B)3:4:,2:4:,1:4:,0:4:b,1:4:,2:4:,3:4:,:4:,1:4:,0:4:b,-1:4:,-2:4:,-1:4:,0:4:b,1:4:,:4:
C)3:4:,2:4:,1:4:,0:4:,1:4:,2:4:,3:4:,:4:,1:8:,0:4.:,-1:4:,-2:4:,:8:,-1:4.:,0:8:,1:8:
D)-6:8:,-6:8:,-6:8:,-4:8:,-2:8:,-2:8:,-2:8:,:8:,-5:8:,-5:8:,-5:8:,-3:8:,-2:8:,-2:8:,-2:8:,:8:,:8:,-2:8:,-2:8:,-1:8:b,-1:8:,-1:8:,-1:8:,-1:8:b,-2:4:,0:4:,1:4:,:4:
E)-6:8.:,-7:16:,-6:8:,-5:8:,-4:8:,-4:8:,-4:4:,-3:8.:,-4:16:,-5:8:,-6:8:,-5:4:,:4:,-3:8:,-5:4:,-5:8:,-4:8:,-4:8:,-3:8:,-3:8:,-4:8:,-4:8:,-5:8:,-5:8:,-6:4:,:4:
F)-6:2:,-5:4:,-6:8:,-5:8:,-4:4:,-2:4:,-4:4:,:4:,-5:4:,-5:4:,-6:4:,-5:4:,-4:2.:,:4:
G)-2:8.:,-1:16:,-2:8.:,-1:16:,-2:4:,-4:4:,-4:8.:,-3:16:,-4:8.:,-3:16:,-4:4:,-6:4:,-4:8:,:8:,-6:8.:,-5:16:,-4:8:,:8:,-6:8.:,-5:16:,-4:8.:,-4:16:,-2:8.:,-2:16:,-5:8.:,-4:16:,-5:4:

考え方

特徴量の定義をどうするかがポイント。
i)だけみると、隣り合う音の高さの差の絶対値かなーと思ってコーディングしてたんですけど、それだとii)で詰まることに気づく。属性が3つあるので高さ以外の属性が関わってるのかと色々と考えてみるも、思いつかず。断念。。。