Супутнє: Музика: що в цьому акорді? , Примітки до табулатури , Генерування вкладок гітари? , Перекладіть парні числа на ноти гітари
З огляду на гітару, виведіть акорд, який він представляє. Ви можете використовувати стандартний вхід і вихід або написати функцію, яка повертає рядок.
Вхідні відбитки будуть класифіковані як один із наступних акордів, який виражатиметься наступним чином (якщо коренева нота була С):
- основна тріада:
C
- незначна тріада:
Cm
- (домінуюча) сьома:
C7
- незначна сьома:
Cm7
Акорд може бути перевернутий, тому ви не можете розраховувати на найнижчу ноту, що є коренем. Не можна також розраховувати на те, що це справжній легкий або звичайний фінгер в реальному світі. Більш загально, результат вашої програми повинен ігнорувати октави пітчів, а всі пітчі, які відповідають одній музичній ноті (тобто A
) , розглядаються як рівні.
Це код-гольф , тому найкоротший код у байтах виграє.
Формат введення
Вхід - це серія з 6 значень, які вказують для кожної струни 6-струнної гітари в стандартній настройці (EADGBE), яка заважає, що ця струна буде відтворюватися. Це також може означати, що рядок взагалі не відтворюється. «Нульова» лада також відома як відкрита позиція, і звідти число підкреслюється. Припустимо, гітара має 21 лад позиції, таким чином, найвища лада позиція 20.
Наприклад, введення X 3 2 0 1 0
означає розміщення одним пальцем у наступних положеннях у верхній частині шиї гітари:
(6th) |---|---|---|---|---
|-X-|---|---|---|---
|---|---|---|---|---
|---|-X-|---|---|---
|---|---|-X-|---|---
(1st) |---|---|---|---|---
і стрибування 2-ї по 6-й струнах. Це відповідає цій вкладці ASCII :
e |-0-|
B |-1-|
G |-0-|
D |-2-|
A |-3-|
E |---|
Ви маєте певну гнучкість у виборі потрібного типу введення: кожне положення ладу може бути виражено рядком або числом. Рядки гітари, які не відтворюються, зазвичай позначаються символом X
, але ви можете вибрати інше значення вартового, якщо це полегшує вам (наприклад, -1
якщо ви використовуєте цифри). Серія з 6 позицій ладу може бути введена як будь-який список, масив чи тип послідовності, окремий рядок, розділений пробілом, або як стандартне введення - ще раз, на ваш вибір.
Ви можете розраховувати на вхід, що відповідає одному з 4 згаданих вище типів акордів.
Будь ласка, поясніть у своєму дописі, яку форму введення приймає ваше рішення.
Формат виводу
Потрібно або повернути, або надрукувати на стандартний висновок рядок, що описує акорд, для якого потрібен пальчик. Цей рядок складається з двох з'єднаних між собою частин. Капіталізація має значення. Доступний пробіл пробігу дозволений.
Перша частина вказує на основну ноту , один з A
, A#
/ Bb
, B
, C
, C#
/ Db
, D
, D#
/ Eb
, E
, F
, F#
/ Gb
, G
або G#
/ Ab
. (Я використовую #
замість ♯
, і b
замість того ♭
, щоб уникнути вимагає Unicode.) Кореневі замітки , які можуть бути виражені без різких або квартири повинні бути виражені без них (ніколи не вихід B#
, Fb
або Dbb
); ті, які не можуть бути виражені одним гострим або плоским символом (тобто C#
або Db
, але ніколи B##
). Іншими словами, ви повинні звести до мінімуму кількість випадкових випадків (різкостей або квартир) у назві нотатки.
Друга частина вказує тип акорду, або порожній для великої тріади, m
для другорядної тріади, 7
для домінуючої сьомої, або m7
для другорядної сьомої. Отже, G-мажор виводиться просто так G
, тоді як D-мінор сьомий може виводитися як або, D#m7
або Ebm7
. Більше прикладів можна знайти в тестових випадках наприкінці.
Теорія та підказки
Музичні ноти
Хроматична шкала має 12 смол на октаву. Налаштований на рівний темперамент, кожен з цих тонів однаково віддалений від своїх сусідів 1 . Піски, що мають 12 півтонів (октава), вважаються такою ж музичною нотою. Це означає, що ми можемо ставитися до нотаток, як цілі числа по модулю 12, від 0 до 11. Сім з них мають літерні назви 2 від А до G. Цього недостатньо для того, щоб назвати всі 12 пунктів, але додавання виправлень випадкових випадків: додавання ♯ ( різка) до ноти робить її на один півтону вищою, а додавання ♭ (плоскої) робить її на один півтону нижче.
Акорди
Акорд - це 2 або більше нот, що граються разом. Тип акорду залежить від зв’язків між нотами, які можна визначити за відстані між ними. У хорді є коренева нота, про яку говорилося раніше. Ми розглянемо кореневу ноту як 0 у цих прикладах, але це довільно, і все, що має значення в цьому виклику, - це відстань між нотами в модульній арифметиці. Завжди буде один унікальний тип акорду для відповіді - тріада або сьомий акорд . Коренева нота не завжди буде найвищою частотою кроку; виберіть кореневу ноту таким чином, щоб ви могли описати акорд як один із чотирьох наступних типів акордів:
- Мажорний тризвук це акорд з нотами
0 4 7
. - Незначна тріада є хордою з примітками
0 3 7
. - Домінуючий (або великий / мінор) сьомий акорд має ноти
0 4 7 10
. - Мінор (або мінор / мінор) сьомий акорд має ноти
0 3 7 10
. 3
Настроювання гітари
Стандартна настройка на 6-струнній гітарі починається з E на нижній струні, а потім набиває ноти з інтервалом 5, 5, 5, 4, потім 5 півтонів, піднімаючи струни. Якщо взяти найнижчий E як 0, це означає, що усі струни гітари дають вам змогу пронумеровано 0 5 10 15 19 24
, модуль 12 якого еквівалентний 0 5 10 3 7 0
, або ноти E A D G B E
.
Працювали приклади
Якщо ваше введення - це 0 2 2 0 0 0
, це відповідає нотам E B E G B E
, тому просто E, B і G. Вони утворюють акорд Em
, який можна побачити, пронумерувавши їх із коренем як E, даючи нам 0 3 7
. (Результат буде однаковим для X 2 X 0 X 0
або 12 14 14 12 12 12
).
Якщо ваш вхід є 4 4 6 4 6 4
, нумерація їх із коренем C♯ дає 7 0 7 10 4 7
, або 0 4 7 10
, отже, відповідь C#7
(або Db7
). Якщо б це було замість цього 4 4 6 4 5 4
, нумерація дала б 7 0 7 10 3 7
, або 0 3 7 10
, що є C#m7
(або Dbm7
).
Тестові кейси
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 за логарифмами їх частот
2 або, в solfège , такі імена, як do, re, mi . У цьому виклику використовуйте буквені назви.
3 Це також можна назвати головним шостим акордом з різним вибором кореневої ноти. У цьому виклику назвіть його другорядним сьомим ім'ям.