Це зворотний бік музики: що в цьому акорді? , що полягає у друкуванні нот у заданому акорді. Цього разу вхід - це список нот у акорді, а ваше завдання - вивести, який саме акорд він.
Ваша програма повинна підтримувати наступні тріадні акорди. Приклади наведено з коренем C. Акорди з іншими коренями - це ті самі акорди з усіма обернутими нотами, так що C стане цією кореневою нотою, наприклад, Dmaj складається з D, F # і A.
C C#D D#E F F#G G#A A#B
Db Eb Gb Ab Bb
Cmaj C E G
Cm C D# G
Caug C E G#
Cdim C D# F#
Csus4 C F G
Csus2 C D G
Зауважте, що Caug - це те саме, що Eaug і G # aug, а Csus4 - це те саме, що і Fsus2. Ви можете випустити будь-яку, але є бонус, якщо ви виведете їх усі.
А сьомі акорди за бонус вказані в наступній таблиці:
C C#D D#E F F#G G#A A#B
Db Eb Gb Ab Bb
C7 C E G A#
Cm7 C D# G A#
Cmmaj7 C D# G B
Cmaj7 C E G B
Caug7 C E G# A#
Cdim7 C D# F# A
Правила
- Можна написати або повну програму, або функцію.
- Вхід - це список приміток, розділених пробілом або іншим зручним символом. Це також може бути масив рядків (якщо він бере вхід з аргументу функції) або рядкове представлення такого масиву.
- Введення даних не повинно бути в певному порядку.
- На вводі можуть бути дублюються нотатки. До них треба ставитися так само, як є лише один з них.
- Вихід - назва акорду. У випадку, якщо він виведе кілька імен, застосовується те саме правило для введення.
- Якщо вхід не підтримується акордом, слід надрукувати нотатки як є. Ваша програма також може підтримувати інші акорди, які не вказані у наведених вище таблицях (що є дійсним, але не має бонусу).
- Ви можете використовувати інші позначення, перелічені в статті Вікіпедії . Але якщо ви виберете
CC-мажор, вам слід додати людський читабельний префікс в будь-якому випадку, щоб відрізнити акорд з однією нотою. - Ви не можете використовувати вбудовані функції для цього завдання (якщо вони є).
- Це код-гольф. Виграє найкоротший код у байтах.
Приклади
- Вхід:
C D# GВихід:Cm. - Вхід:
C Eb GВихід:Cm. - Вхід:
C Eb F#Вихід:Cdim. - Вхід:
F A C#Вихід:Faug,Aaug,C#aug,DbaugабоFaug Aaug C#aug,Faug Aaug Dbaugв будь-якому порядку. - Вхід:
F D F F F F A A FВихід:Dm. - Вхід:
C DВихід:C D.
Бонуси
- -30, якщо він роздруковує їх усіх, якщо є кілька інтерпретацій (для aug, sus4 / sus2 і dim7).
- -70, якщо він також підтримує сьомі акорди.
- -200, якщо він приймає вхід MIDI і друкує кожен отриманий акорд. Зауважте, що нотатки не повинні починатись і закінчуватися одночасно. Ви вирішуєте, що відбувається в проміжних станах (до тих пір, поки воно не вийде з ладу або перестане працювати). Ви можете припустити, що в ударних каналах немає приміток (або є лише один канал, якщо це зручно). Рекомендується також надати текстову (або масив) версію для тестування, особливо якщо це залежить від платформи.
B#, Cbі т.д.
Csus4 is the same as Gsus2. Я думаю, ти маєш на увазі, Csus2 is the same as Gsus4чи не так?