Sou músico e preciso de mais polirritmos na minha vida!
Um polirritmo ocorre na música (e na natureza) quando dois eventos (palmas, notas, vaga-lumes piscando etc.) ocorrem em dois intervalos regulares diferentes. Os dois tipos de evento acontecem um número diferente de vezes no mesmo intervalo.
Se eu tocar com a mão esquerda duas vezes e com a mão direita três vezes, no mesmo espaço de tempo, ficará um pouco assim:
------
R . . .
L . .
Os hífens no topo denotam o comprimento do padrão polirrmico, que é o menor múltiplo comum ou 2 e 3. Isso pode ser entendido como o ponto em que o padrão se repete.
Há também um 'metarritmo', que é o padrão produzido quando uma das mãos está tocando:
------
R . . .
L . .
M . ...
Este é um polirritmo simples e muito comum, com uma proporção de 3: 2.
Digamos apenas que não quero fazer um polirritmo simples que possa resolver na minha cabeça, então preciso de algo para resolver isso para mim. Eu poderia fazer isso de forma longa no papel, ou ...
Regras:
- Escreva algum código para gerar e exibir um diagrama polirritmático, conforme descrito acima.
- Qualquer idioma antigo, tente pelo menor número de bytes.
- Seu código usa dois argumentos:
- Número de toques com a mão esquerda (número inteiro positivo)
- Número de toques com a mão direita (número inteiro positivo)
- Ele calculará o comprimento, que é o múltiplo comum mais baixo para os dois argumentos.
- A linha superior será composta por dois caracteres de espaço em branco seguidos por hífens exibindo o comprimento (comprimento * '-')
- A segunda e terceira linhas mostrarão o padrão para as mãos direita e esquerda:
- Ele começará com um R ou L, indique de que lado ele é, seguido por um espaço.
- O intervalo para essa mão é o comprimento dividido por seu argumento.
- Os toques começarão no terceiro caractere, indicado por qualquer caractere que você escolher. A partir de então, ele exibirá o mesmo caractere 'intervalo' caracteres separados.
- Não será maior que a linha de comprimento.
- A quarta linha é o metarritmo:
- Ele começará com M maiúsculo, seguido por um espaço.
- A partir do terceiro caractere, ele mostrará um personagem (qualquer personagem que você escolher) em todas as posições em que houver um toque na mão direita ou esquerda.
- O espaço em branco à direita é irrelevante.
Casos de teste:
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 ........
Feliz golfe!
re lcomo dois valores separados? Poderíamos aceitar uma matriz de dois elementos, por exemplo? Que tal a ordem deles, isso é rseguido estritamente l?