Рік 930, і у Григоріанської церкви виникають проблеми. У них тисячі сторінок співочої музики, але проблема полягає в тому, що всю ноту просто кинули на купу, замість того, щоб мати реальну організаційну систему:
Зображення користувача gamerprinter у Гільдії картографів .
Церкві потрібно організувати всі ноти, тому вони найняли середньовічного інженера-програміста, щоб написати програму, щоб організувати її для них. Ви - інженер програмного забезпечення, якого найняли. Однак процес складання в середньовічні часи передбачає написання програми на папері командою повільних біблійних книжників. Щоб зменшити час, необхідний команді переписувачів для складання вашого коду, ви повинні зробити програму якомога меншою.
Церква хоче, щоб музика пісень була організована на основі музичного масштабу, про який вони написані. Вся музика церкви, що співає, написана в дорійських масштабах . Враховуючи ноти певного музичного твору, ваша програма виводить масштаб Доріана, який він є. Тут я поясню, що таке масштаб Доріана. Якщо ви вже знаєте, ви можете пропустити цей розділ.
У будь-якій мелодії 12 можливих нот. Ось вони в порядку:
C C# D D# E F F# G G# A A# B
Півтони (представлено з використанням S
) є приріст на один крок вправо, обтікання (так півтон вгору від B буде назад в C). Сигнал (представлений з використанням T
) два півтони. Наприклад, півтоном вгору від F # буде G. Будь-тоном від F # буде G #.
Щоб створити доріанську шкалу, ми починаємо з будь-якої ноти у списку, а потім рухаємося вгору за наступним шаблоном, перелічуючи нотатки, які ми зустрічаємо:
T, S, T, T, T, S
Приклад. Я починаю з А. Нотатки моєї доріанської шкали:
A
B (up a tone)
C (up a semitone)
D (up a tone)
E (up a tone)
F# (up a tone)
G (up a semitone)
Шкала має ноти A, B, C, D, E, F # і G. Так як я виходив з А, ми називаємо це Доріан масштабу в . Тому існує 12 різних масштабів Доріану, кожна з яких названа на честь ноти, з якої вони почали. Кожен з них використовує однаковий візерунок тонів і півтонів, тільки починаючи з іншого положення. Якщо моє пояснення не є узгодженим, ви можете також звернутися до Вікіпедії .
Введення програми може бути надано з усього, що підходить для вашої програми (наприклад, STDIN, аргумент командного рядка raw_input()
). Він може не бути попередньо ініціалізований у змінній. Введенням буде список відокремлених комами нот, що представляють мелодію твору. Можуть бути повторні нотатки. У вкладі завжди буде достатньо різних приміток, щоб можна було рішуче вивести масштаб твору. Приклад введення:
B,B,D,E,D,B,A,G#,A,G#,E,D,F#,E,F#,E,F#,G#,A
Виходом програми має бути рядок Dorian scale in X
, де X - початкова нота шкали. Вихід з прикладу вводу:
Dorian scale in B
Порівнюючи це зі шкалою Доріана в B ( B C# D E F# G# A
), ми бачимо, що всі ноти мелодії знаходяться в межах цієї шкали. Примітка C # не використовується в цьому випадку. Однак є достатньо приміток, щоб однозначно визначити Б Доріана як правильний ключ. Жодна інша шкала Доріана не підходить, оскільки яку б іншу шкалу ми не пробували, завжди є хоча б одна нота мелодії, яка не належить до шкали.
Це кодовий гольф, тому виграє запис із найменшою кількістю символів. Запитуйте в коментарях, якщо у вас є питання.