Dado o número de vértices n ≥ 3
e o "tamanho da etapa" 1 ≤ m < n/2
(indicando a distância entre dois vértices conectados), produza uma representação gráfica do polígrama regular correspondente . Se o polígrama consistir em vários loops fechados, cada loop deverá ser renderizado em uma cor de linha diferente. (Se isso parecer confuso, os exemplos abaixo devem esclarecer as coisas.)
Regras
Qualquer solução razoável para o problema provavelmente satisfará essas regras automaticamente - elas existem apenas para colocar algumas restrições nos parâmetros da saída, a fim de evitar respostas como "Este bloco preto é totalmente um polígono, mas você não pode vê-lo porque Defino a largura da linha para mais de 9000 ".
- Você pode renderizar o polígono em um arquivo (que pode ser gravado em disco ou no fluxo de saída padrão) ou exibi-lo na tela.
- Você pode usar gráficos vetoriais ou raster. Se sua saída for rasterizada, sua imagem deverá ter dimensões de 400x400 pixels ou mais, e o raio do polígrama (a distância do centro a cada vértice) deverá estar entre 35% e 50% do comprimento lateral.
- A proporção do polígono deve ser 1 (para que seus vértices fiquem em um círculo adequado) - a tela da imagem pode ser retangular.
- As linhas do polígono não devem ter mais que 5% do raio (e, é claro, devem ter uma espessura diferente de zero para serem visíveis).
- Você pode renderizar eixos ou um quadro além do polígrama, mas nada mais.
- Você pode escolher qualquer cor de fundo (sólida).
- Para polígramas que consistem em vários loops fechados, você deve suportar pelo menos 6 cores visualmente distintas , todas diferentes do plano de fundo. (A escala de cinza é boa, desde que as tonalidades estejam suficientemente espalhadas pelo espectro.) Seu código ainda deve funcionar por mais de 6 loops, mas as cores não precisam ser distinguíveis para quaisquer loops adicionais (ou seja, você também pode reutilizar cores dos loops anteriores nesse ponto).
Isso é código de golfe, então a resposta mais curta (em bytes) vence.
Exemplos
Aqui estão todas as saídas até n = 16
(onde a coluna corresponde n
e a linha a m
):
Como exemplos para maiores n
, aqui estão (n, m) = (29, 11)
e (30, 12)
: