Я музыкант, и мне нужно больше полиритмов в моей жизни!
Полиритм возникает в музыке (и в природе), когда два события (хлопки, ноты, мигание светлячков и т. Д.) Происходят с двумя разными регулярными интервалами. Два вида событий происходят разное количество раз в одном и том же интервале.
Если я коснусь левой рукой два раза и правой рукой три раза за одно и то же время, это будет выглядеть примерно так:
------
R . . .
L . .
Дефисы в верхней части обозначают длину полиртмического шаблона, который является наименьшим общим кратным или 2 и 3. Это можно понимать как точку, в которой шаблон повторяется.
Есть также «метаритм», который представляет собой паттерн, генерируемый при нажатии любой руки:
------
R . . .
L . .
M . ...
Это простой и очень распространенный полиритм с соотношением 3: 2.
Скажем так, я не хочу делать простой полиритм, который я могу выработать в своей голове, поэтому мне нужно что-то, чтобы решить это для меня. Я мог бы сделать это на бумаге, или ...
Правила:
- Напишите некоторый код для генерации и отображения диаграммы ритма, как описано выше.
- Любой старый язык, попробуйте наименьшее количество байтов.
- Ваш код принимает два аргумента:
- Количество нажатий левой рукой (положительное целое число)
- Количество нажатий правой рукой (положительное целое число)
- Он определит длину, которая является наименьшим общим кратным для двух аргументов.
- Верхняя строка будет состоять из двух пробельных символов, за которыми следуют дефисы, отображающие длину (длина * '-')
- Вторая и третья строки покажут образец для правой и левой руки:
- Он начнется с R или L, обозначьте, какая это рука, а затем пробел.
- Интервал для этой руки - это длина, разделенная на аргумент.
- Нажатие начнется с третьего символа, обозначенного любым выбранным вами символом. С этого момента он будет отображать один и тот же символ с интервалом.
- Это не будет длиннее, чем длина линии.
- Четвертая строка - это метаритм:
- Он начнется с заглавной буквы M, за которой следует пробел.
- Начиная с третьего символа, он будет отображать символ (любой выбранный вами символ) в каждой позиции, где есть нажатие на правую или левую руку.
- Конечный пробел не имеет значения.
Тестовые случаи:
r = 3, l = 2
------
R . . .
L . .
M . ...
r = 4, l = 3
------------
R . . . .
L . . .
M . .. . ..
r = 4, l = 5
--------------------
R . . . .
L . . . . .
M . .. . . . ..
r = 4, l = 7
----------------------------
R . . . .
L . . . . . . .
M . . .. . . . .. .
r = 4, l = 8
--------
R . . . .
L ........
M ........
Удачного игры в гольф!
r
и l
как два отдельных значения? Можем ли мы принять массив из двух элементов, например? Как насчет их порядка, это строго r
соблюдается l
?