Większość z was prawdopodobnie zna skalę C-dur:
C D E F G A B C
Skala główna charakteryzuje się odstępami między sąsiednimi nutami, które mierzone w półtonach to:
2 2 1 2 2 2 1
Z tych przedziałów możemy skonstruować dowolną dużą skalę, zaczynając od dowolnej nuty ( klucz skali). 12 nut w naszym 12-tonowym systemie strojenia o równym temperamencie to:
C C♯ D D♯ E F F♯ G G♯ A A♯ B
równoważnie (zastępując niektóre odpowiedniki enharmoniczne ):
C D♭ D E♭ E F G♭ G Ab A B♭ B
z półtonem między każdą parą sąsiednich nut.
Każda skala musi mieć po kolei siedem nut, zaczynając od klucza. W przeciwnym razie możesz mieć dwie nuty w tej samej linii pentagramu, co byłoby mylące. Zatem w G # major / ionian masz F ## zamiast G; muzycy po prostu sprawdzą, gdzie na pentagramie jest nuta, już nauczyli się przypadków dla każdej skali. Rzeczywiście, w G # dur , F ## jest reprezentowane w linii F ## bez przypadkowych, wypadki są w sygnaturze kluczowej - ale ponieważ ta sygnatura kluczowa wymagałaby 2 ostrych znaków dla F, zwykle jest to oznaczone jako Ab-dur.
Przesuwając 2 2 1 2 2 2 1
interwały, dochodzimy do siedmiu różnych trybów skali diatonicznej:
- Joński :
2 2 1 2 2 2 1
- odpowiada skali głównej - Dorian :
2 1 2 2 2 1 2
- Frygijski :
1 2 2 2 1 2 2
- Lidian :
2 2 2 1 2 2 1
- Mixolydian :
2 2 1 2 2 1 2
- Eolska :
2 1 2 2 1 2 2
- odpowiada naturalnej skali mniejszej i melodycznej skali mniejszej podczas schodzenia (podczas wstępowania skala melodyczna podniosła 6 i 7 stopni. Istnieje również harmoniczna skala mniejsza, z podniesionym 7 stopniem w porównaniu do naturalnego mniejszy). - Locrian :
1 2 2 1 2 2 2
Wyzwanie polega więc na napisaniu programu, który przyjmuje jako wejście (przez stdin ) klucz oraz tryb i wyprowadza (przez stdout ) odpowiednią skalę. Niektóre przypadki testowe ( stdin ( key
mode
) => stdout ( scale
)):
Input: Output:
C mixolydian => C D E F G A Bb
F mixolydian => F G A Bb C D Eb
G mixolydian => G A B C D E F
G# ionian => G# A# B# C# D# E# F##
Bb aeolian => Bb C Db Eb F Gb Ab
Dalsze odniesienia:
Ile jest kluczy (głównych i mniejszych)? Dlaczego?
Odpowiedzi:
GolfScript, 96 znaków
Rozwiązanie Golfscript, które można przetestować online .
Uwaga: Podobnie jak w przykładach, klawisz musi być pisany wielkimi literami, podczas gdy tryb musi być podawany małymi literami.
Przykłady:
źródło