Introdução
O código de Parsons é apenas uma maneira simples de descrever variações de tom em uma peça musical, seja uma nota maior ou menor que a anterior.
Mesmo se você se lembrar de músicas, ainda é possível lembrar se uma nota sobe ou desce, portanto, o código Parsons pode ajudá-lo a identificar uma música usando um mecanismo de pesquisa.
Descrição
Cada variação é representada por um único caractere, que é um dos seguintes:
R
se a nota for a mesma que a anterior (significa " R epeat" )U
se a nota for maior que a anterior (significa " U p" )D
se a nota for menor que a anterior (significa " D own" )
A nota inicial é escrita como *
.
Exemplo
Aqui está um exemplo de código de Parsons (início de "Ode to Joy" ):
*RUURDDDDRUURDR
Você pode visualizá- lo assim:
*-*
/ \
* *
/ \
*-* * *-*
\ / \
* * *-*
\ /
*-*
Vamos chamar isso de um contorno a partir de agora.
As regras para desenhar esses contornos são consideradas auto-explicadas pelo exemplo acima.
Desafio
Agora vem o verdadeiro desafio.
Escreva um programa que, dado um contorno como entrada, produz seu código Parsons correspondente.
Você não é solicitado a desenhar o contorno, mas o oposto, na verdade.
No contorno, encontre o código Parsons original.
Regras
- Aplicam-se as regras usuais para o golfe com código
- O programa mais curto em número de bytes vence
- A entrada é um contorno e a saída deve ser um código Parsons válido
- Detalhes sobre espaço em branco extra para a entrada são irrelevantes, faça o que for melhor para você
- Você não tem permissão para codificar, de uma maneira ou de outra, partes da saída e / ou do programa usando espaço em branco extra devido à regra anterior
Notas
- Isso pode ser útil para testar
- O código Parsons correspondente para
*
é*
- Uma sequência vazia não é um contorno válido
- Um código Parsons sempre começa com
*
*
que não faz nada?
*
? Não. Deveria imprimir *
, suponho. Vou adicionar esta caixa de canto.
*
. Sempre.