Gestern habe ich eine Mundharmonika gekauft:
Abbildung 1: Die Mundharmonika.
Meine Träume, seelenvolle Blues-Mundharmonika spielen zu können, die Menschen bewegt und einen erwachsenen Mann zum Weinen bringt, wurden jedoch schnell von zwei Problemen zunichte gemacht:
- Die Mundharmonika kann nur bestimmte Noten spielen;
- Ich bin deprimierend schlecht darin, Mundharmonika zu spielen.
Trotz meiner mangelnden Fähigkeiten in der Mundharmonika gibt es immer noch einige Songs, die ich darauf spielen kann. Es ist jedoch nicht sofort ersichtlich, ob ich ein Musikstück auf der Mundharmonika spielen kann oder nicht. Schreiben Sie anhand der Noten eines Musikstücks ein Programm, um festzustellen, ob ich es auf meiner Mundharmonika spielen kann oder nicht.
Wie das obige Bild zeigt, hat meine Mundharmonika zehn Löcher. Mit jedem Loch kann ich entweder einatmen oder einatmen - das Loch, das ich wähle, und ob ich einatme oder ausatme, ändert die Tonhöhe des resultierenden Klangs. Jedes Loch hat beim Ausatmen und Einatmen eine andere Tonhöhe, aber es gibt einige Kombinationen, die zur gleichen Note führen. Insgesamt kann meine Mundharmonika 19 verschiedene Tonhöhen spielen. Die Tonhöhen werden in musikalischer Notation dargestellt - der Buchstabe steht für die Note und die Zahl für die Oktave.
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
Wenn ich zum Beispiel bei Loch 3 ausatme, bekomme ich eine G4
Notiz. Wenn ich auf Loch 2 einatme, bekomme ich auch eine G4
Notiz. Wenn ich bei Loch 7 ausatme, bekomme ich eine C6
.
Wenn ich in die Mundharmonika einatme, kann ich neben dem Ausatmen oder Einatmen auch wählen, ob ich dünn oder weit atmen möchte . Durch dünnes Atmen ertönt nur ein Loch, während durch weites Atmen ein Loch und beide Löcher auf beiden Seiten dieses Lochs ertönen. Ich habe nicht die Fähigkeit, auf zwei Löcher zu blasen - es ist entweder eines oder drei.
Wenn ich zum Beispiel dünn auf Loch 4 ausatme, klingt nur Loch 4, sodass ich einen C5-Sound bekomme. Wenn ich weit auf Loch 4 ausatme, klingen die Löcher 3, 4 und 5 und ich bekomme einen G4-, C5-, E5-Akkord. Wenn ich weit in Loch 4 einatme, klingen die Löcher 3, 4 und 5, aber sie spielen stattdessen die Einatmungstöne, was zu einem B4-, D5-, F5-Akkord führt. Beachten Sie, dass für die Löcher an beiden Enden, wenn ich sie weit einatme, nur zwei Löcher ertönen würden (da es kein Loch 0 oder Loch 11 gibt).
Ich kann jedoch nicht gleichzeitig ein- und ausatmen. Zum Beispiel könnte ich in die Löcher 4, 5 und 6 ausatmen, damit die Noten C5, E5 und G5 gleichzeitig klingen und einen Akkord bilden. Ich kann jedoch nicht gleichzeitig ein- und ausatmen, so dass ich den Akkord C5, F5, A5 nicht spielen kann, da ich in Loch 4 irgendwie ausatmen und in Loch 5 und 6 einatmen müsste Dies ist noch unklar, dieser Kommentarthread könnte nützlich sein.
Die Eingabe sind die Noten der Musik. Die Noten werden auf die gleiche Weise notiert wie oben in der Tabelle und durch Kommas getrennt. Noten in geschweiften Klammern stehen für einen Akkord. Zum Beispiel:
C4,D4,G4,{D5,F5,A5},B5
Dies bedeutet: "C4, dann D4, dann G4, dann D5, F5 und A5 gleichzeitig, dann B5." Ihr Programm verwendet eine Zeichenfolge in diesem Format als Eingabe und Ausgabe, True
wenn ich die Musik auf meiner Mundharmonika oder auf False
andere Weise abspielen kann. Für Beispiel-Ein- und Ausgänge sollte das obige Beispiel ausgegeben werden True
. Der Eingang {C5,F5,A5}
hingegen wird ausgegeben False
.
Dies ist Code Golf, also gewinnt der kürzeste Eintrag.
Hier einige Testfälle:
Eingang (AC-Dur-Skala):
C4,D4,E4,F4,G4,A4,B4,C5
Ausgabe:
False
(weil die Mundharmonika F4 oder A4 nicht spielen kann)
Eingabe (die ersten 2 Takte von Let It Go ):
E6,F6,A5,E6,F6,F6,E6,A5,F6,E6
Ausgabe:
True
Eingang:
{E6,G6,F6}
Ausgabe:
False
Eingang:
{G4,C5,E5},{F5,A5,B5}
Ausgabe:
True
Sie können davon ausgehen, dass die Akkorde in einer niedrigeren bis höheren Tonhöhe vorliegen.