← К задачам
Средне · +3МассивыЧисла

Транспонировать мелодию

Певцу неудобно петь в исходной тональности, и тебя, как аранжировщика, просят сдвинуть всю мелодию повыше или пониже.

Ноты записаны числами от 0 до 11 — это полутоны внутри октавы (0 — до, 1 — до-диез, и так далее по кругу до 11). Транспонирование на semitones полутонов означает, что к каждой ноте прибавляется это число, а результат берётся по модулю 12, чтобы остаться внутри октавы.

Напиши функцию transpose(notes, semitones), которая принимает список нот notes (целые 0..11) и целое число semitones (может быть отрицательным), и возвращает новый список, где каждая нота заменена на (note + semitones) mod 12. Результат всегда в диапазоне 0..11.

Примеры:

transpose([0, 4, 7], 2)   -> [2, 6, 9]
transpose([10, 11, 0], 3) -> [1, 2, 3]
def transpose(notes, semitones):
    pass
Для запуска тестов необходима авторизация.
Поддержать проект