昨日、私はハーモニカを買いました:
図1:ハーモニカ。
しかし、人々を感動させ、大人になった男性を泣かせてしまうソウルフルブルースハーモニカを演奏できるという私の夢は、次の2つの問題にすぐに打ちのめされました。
- ハーモニカは特定のノートのみを再生できます。
- 私はハーモニカを弾くのがうんざりです。
ハーモニカのスキルが不足しているにもかかわらず、私が演奏できる曲はまだいくつかあります。しかし、ハーモニカでいくつかの曲を演奏できるかどうかはすぐにはわかりません。音楽の音符を考慮して、ハーモニカで演奏できるかどうかを判断するプログラムを作成します。
上の写真が示すように、私のハーモニカには10個の穴があります。それぞれの穴で、息を吸い込んだり吸い込んだりすることができます-私が選択した穴と、それに吸い込むか吐き出すかによって、結果の音のピッチが変わります。吐き出すときと吸い込むときのピッチは穴ごとに異なりますが、同じ音符になる組み合わせもあります。全体として、私のハーモニカは19の異なるピッチを演奏できます。ピッチは音楽の科学表記法で表示されます。文字は音符を表し、数字はそのオクターブを表します。
Hole Breathing Note
1 Exhale C4
1 Inhale D4
2 Exhale E4
2 Inhale G4
3 Exhale G4
3 Inhale B4
4 Exhale C5
4 Inhale D5
5 Exhale E5
5 Inhale F5
6 Exhale G5
6 Inhale A5
7 Exhale C6
7 Inhale B5
8 Exhale E6
8 Inhale D6
9 Exhale G6
9 Inhale F6
10 Exhale C7
10 Inhale A6
たとえば、3番ホールで息を吐いた場合、G4
メモが表示されます。2番ホールを吸い込んだ場合、メモも取得しG4
ます。7ホール目で息を吐くと、C6
。
ハーモニカに息を吹き込むときは、息を吐いたり吸い込んだりする以外に、息を細くするか広くするかを選択することもできます。薄く呼吸すると、1つの穴だけが鳴りますが、広く呼吸すると、その穴の両側にある1つの穴と両方の穴が鳴ります。私は2つの穴を吹き飛ばすためのアンブシュアスキルがありません-1つまたは3つです。
たとえば、4番の穴に細く息を吐くと、4番の穴だけが鳴るので、C5の音がします。4ホールに大きく息を吐くと、3、4、および5ホールが鳴り、G4、C5、E5のコードが得られます。4番ホールを広く吸入すると、3、4、5番ホールが鳴りますが、代わりにピッチを吸入し、B4、D5、F5の和音を生成します。どちらかの端の穴については、私がそれらに大きく息を吹き込んだ場合、2つの穴だけが聞こえることに注意してください(穴0または穴11がないため)。
しかし、私は同時に吸ったり吐いたりすることはできません。たとえば、4、5、6番のホールに息を吹きかけて、C5、E5、G5のノートを同時に鳴らし、コードを形成することができます。ただし、同時に吸い込むことも吐くこともできないので、C5、F5、A5のコードを演奏するのは不可能です。これはまだ明確ではありませんが、このコメントスレッドは役に立つかもしれません。
入力は音楽の音符です。メモは、表の上部と同じように表記され、カンマで区切られています。中括弧で囲まれた音符は和音を表します。例えば:
C4,D4,G4,{D5,F5,A5},B5
これは、「C4、D4、G4、D5、F5、A5が同時に、B5が同時に」という意味です。True
私のハーモニカで音楽を演奏できる場合は、プログラムはこの形式の文字列を入出力として受け取りFalse
ます。入力と出力のサンプルについては、上記の例ではを出力する必要がありますTrue
。{C5,F5,A5}
一方、入力は出力されますFalse
。
これはコードゴルフなので、最短のエントリーが勝ちます。
ここにいくつかのテストケースがあります:
入力(ACメジャースケール):
C4,D4,E4,F4,G4,A4,B4,C5
出力:
False
(ハーモニカはF4またはA4を演奏できないため)
入力(Let It Goの最初の 2小節):
E6,F6,A5,E6,F6,F6,E6,A5,F6,E6
出力:
True
入力:
{E6,G6,F6}
出力:
False
入力:
{G4,C5,E5},{F5,A5,B5}
出力:
True
あなたはコードが低いピッチから高いピッチの順番で来ると仮定するかもしれません。