Powiązane: Muzyka: co jest w tym akordzie? , Nuty do tabulatury , Generujesz tabulatury na gitarę? , Przetłumacz pary liczb na nuty gitarowe
Biorąc pod uwagę palcowanie gitary, wydaje akord, który reprezentuje. Możesz użyć standardowego wejścia i wyjścia lub napisać funkcję, która zwraca ciąg znaków.
Palce wejściowe będą klasyfikowane jako jeden z następujących akordów, które zostaną wyrażone w następujący sposób (jeśli nutą pierwiastkową było C):
- główna triada:
C
- niewielka triada:
Cm
- (dominujący) siódmy:
C7
- mniejszy siódmy:
Cm7
Akord może być odwrócony, więc nie możesz polegać na najniższej nucie będącej rdzeniem. Nie możesz też polegać na tym, że jest to łatwe lub wspólne palcowanie w prawdziwym świecie. Mówiąc bardziej ogólnie, wynik programu musi ignorować oktawy wysokości i traktować wszystkie wysokości odpowiadające tej samej nucie (tj. A
) Jako równe.
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach.
Format wejściowy
Dane wejściowe to seria 6 wartości, które wskazują, dla każdego struny 6-strunowej gitary w standardowym strojeniu (EADGBE), na które to drażnienie będzie grane. Może to również oznaczać, że ciąg nie jest w ogóle odtwarzany. Próg „zerowy” jest również znany jako pozycja otwarta, a numery progów liczą się od tego momentu. Załóżmy, że gitara ma 21 pozycji progów, tak że najwyższa pozycja progu to liczba 20.
Na przykład wejście X 3 2 0 1 0
oznacza umieszczenie palców w następujących pozycjach u góry szyi gitary:
(6th) |---|---|---|---|---
|-X-|---|---|---|---
|---|---|---|---|---
|---|-X-|---|---|---
|---|---|-X-|---|---
(1st) |---|---|---|---|---
i brzdąkanie od 2 do 6 strun. Odpowiada tej zakładce ASCII :
e |-0-|
B |-1-|
G |-0-|
D |-2-|
A |-3-|
E |---|
Masz pewną elastyczność w wyborze rodzaju danych wejściowych: każda pozycja progu może być wyrażona jako ciąg znaków lub liczba. Ciągi gitarowe, które nie są odtwarzane, są zwykle oznaczone symbolem X
, ale możesz wybrać inną wartość wartownika, jeśli to ci ułatwi (np. -1
Jeśli używasz liczb). Szereg 6 pozycji progów może być wprowadzany jako dowolny typ listy, tablicy lub sekwencji, pojedynczy ciąg znaków oddzielony spacją lub jako standardowe wejście - po raz kolejny, według własnego wyboru.
Możesz polegać na danych wejściowych odpowiadających jednemu z 4 typów akordów wymienionych powyżej.
Wyjaśnij w swoim poście, jaką formę danych wejściowych bierze twoje rozwiązanie.
Format wyjściowy
Musisz albo zwrócić lub wydrukować na standardowe wyjście ciąg opisujący akord, dla którego ma być palcowanie. Ta struna składa się z dwóch części połączonych razem. Kwestie kapitalizacji. Końcowe białe znaki są dozwolone.
Pierwsza część wskazuje Prymę , jeden A
, A#
/ Bb
, B
, C
, C#
/ Db
, D
, D#
/ Eb
, E
, F
, F#
/ Gb
, G
lub G#
/ Ab
. (Używam #
zamiast ♯
, i b
zamiast ♭
, aby uniknąć konieczności Unicode). Prymy które mogą być wyrażone bez ostry lub mieszkania muszą być wyrażone bez nich (nigdy wyjście B#
, Fb
lub Dbb
); tych, które nie mogą być wyrażone muszą jednym ostrym lub płaskiej symbolem (tj albo C#
albo Db
, ale nigdy B##
). Innymi słowy, musisz zminimalizować liczbę przypadkowych (ostrych lub płaskich) w nazwie notatki.
Druga część wskazuje rodzaj akordu, pustego dla dużej triady, m
dla małej triady, 7
dla dominującej siódmej lub m7
dla mniejszej siódmej. Tak więc G-dur jest wyprowadzany po prostu jako G
, podczas gdy siódma D-moll może być wyprowadzana jako jedna D#m7
lub Ebm7
. Więcej przykładów można znaleźć w przypadkach testowych na końcu.
Teoria i wskazówki
Nuty
Skala chromatyczna ma 12 podziałek na oktawę. Po dostrojeniu do równego temperamentu, każdy z tych dźwięków jest jednakowo oddalony od swoich sąsiadów 1 . Tony o 12 półtonach (oktawie) są uważane za tę samą nutę. Oznacza to, że możemy traktować nuty jak liczby całkowite modulo 12, od 0 do 11. Siedem z nich otrzymuje nazwy literowe 2 od A do G. To nie wystarczy, aby nazwać wszystkie 12 wysokości, ale dodanie przypadkowych poprawek powoduje, że: dodanie ♯ ( ostry) do nuty powoduje, że jest o jeden półton wyższy, a dodanie ♭ (płaskiej) powoduje, że jest o półton niżej.
Akordy
Akord to 2 lub więcej nut granych razem. Rodzaj akordu zależy od relacji między nutami, które można określić na podstawie odległości między nimi. Akord ma nutę główną, jak wspomniano wcześniej. W tych przykładach potraktujemy nutę główną jako 0, ale jest to arbitralne, a wszystko, co liczy się w tym wyzwaniu, to odległość między nutami w arytmetyce modulo. W odpowiedzi zawsze będzie jeden unikalny typ akordu, triada lub siódmy akord . Nuta główna nie zawsze będzie miała najniższy ton; wybierz nutę główną, aby opisać akord jako jeden z czterech następujących rodzajów akordów:
- Głównym triada jest cięciwa z nut
0 4 7
. - Moll triada jest cięciwa z nut
0 3 7
. - Dominującą (lub główny / poboczny) siódmy akord ma notatki
0 4 7 10
. - Moll (lub drobne / minor) siódmy akord ma notatki
0 3 7 10
. 3)
Strojenie gitary
Standardowe strojenie na gitarze 6-strunowej zaczyna się od E na najniższej strunie, a następnie uderza nuty w odstępach 5, 5, 5, 4, a następnie 5 półtonów w górę strun. Przyjmując najniższą E jako 0, oznacza to, że uderzenie wszystkich strun gitary daje ci ponumerowane wysokości 0 5 10 15 19 24
, których moduł 12 jest równoważny 0 5 10 3 7 0
lub nuty E A D G B E
.
Sprawdzone przykłady
Jeśli twój wkład brzmi 0 2 2 0 0 0
, odpowiada to nutom E B E G B E
, więc tylko E, B i G. Tworzą one akord Em
, który można zobaczyć, numerując je z rdzeniem jako E, dając nam 0 3 7
. (Wynik byłby taki sam dla X 2 X 0 X 0
lub 12 14 14 12 12 12
.)
Jeśli twój wkład to 4 4 6 4 6 4
, numerowanie ich z rdzeniem C♯ daje 7 0 7 10 4 7
, lub 0 4 7 10
, więc odpowiedź brzmi C#7
(lub Db7
). Gdyby tak było 4 4 6 4 5 4
, numeracja dałaby 7 0 7 10 3 7
, lub 0 3 7 10
, co jest C#m7
(lub Dbm7
).
Przypadki testowe
X 3 2 0 1 0 ---> C
0 2 2 0 0 0 ---> Em
X 2 X 0 X 0 ---> Em
4 4 6 4 6 4 ---> C#7 (or Db7)
4 4 6 4 5 4 ---> C#m7 (or Dbm7)
0 2 2 1 0 0 ---> E
0 0 2 2 2 0 ---> A
X X 4 3 2 2 ---> F# (or Gb)
3 2 0 0 0 1 ---> G7
X X 0 2 1 1 ---> Dm7
3 3 5 5 5 3 ---> C
4 6 6 5 4 4 ---> G# (or Ab)
2 2 4 4 4 5 ---> B7
0 7 5 5 5 5 ---> Am7
7 6 4 4 X X ---> B
8 6 1 X 1 3 ---> Cm
8 8 10 10 9 8 --> Fm
0 19 5 16 8 7 --> Em
6 20 0 3 11 6 --> A# (or Bb)
X 14 9 1 16 X --> G#m (or Abm)
12 14 14 12 12 12 --> Em
15 14 12 12 12 15 --> G
20 X 20 20 20 20 --> Cm7
X 13 18 10 11 10 --> A#7 (or Bb7)
1 według logarytmów ich częstotliwości
2 lub, w solfège , nazwy takie jak do, re, mi . W tym wyzwaniu użyj nazw liter.
3 Można to również nazwać głównym szóstym akordem, z innym wyborem nuty korzeniowej. W tym wyzwaniu nazwij go jego mniejszym siódmym imieniem.