Este desafio é inspirado neste fantástico diagrama animado (obrigado à flawr por publicá-lo no chat).
Dada uma entrada n
, desenhe todos os seus fatores primos como polígonos aninhados de pontos, conforme especificado.
Por exemplo, dado o número 357 = 17x7x3
, você organiza 3 pontos em um triângulo, 7 versões desses triângulos em um heptágono e 17 versões desses heptágonos em 17 gon. Em resumo, polígonos aninhados que vão do maior fator primo do lado de fora ao menor do lado de dentro. Pois 357
, sua resposta deve se parecer um pouco com isso (com ou sem cor):
Todos os polígonos de todos os primos >= 3
não devem ser rotacionados em torno do diagrama.
A única exceção é a principal 2
, especificamente para poderes ímpares de 2
. Como você pode ver no exemplo 376 = 47x2x2x2
abaixo, os 8
s giram e não são linhas únicas de 2
s, mas são pilhas verticais de 4
s em um quadrado. Mesmo os poderes de 2
, dispostos em quadrados, não precisam ser rotacionados dessa maneira.
De fato, 448 = 7x2x2x2x2x2x2
possui um diagrama que se parece com um heptágono de 64
s e 64
é organizado em um quadrado de quadrados de quadrados, mas sem rotação.
Mais dois exemplos são 440 = 11x5x2x2x2
e 432 = 3x3x3x2x2x2x2
. Vemos que, 440
com uma potência ímpar de 2, girou 8
s, mas 432
com uma potência par de 2
não gira seus 16
s.
E, finalmente, aqui está um exemplo mínimo 10 = 5x2
, sem cores que eu zombei do Python e de seu turtle
módulo.
O desafio
- Dada uma entrada em
n
que1 <= n <= 10000
, produz uma imagem de seus polígonos de fator aninhados. - As regras são:
- A imagem é composta de polígonos aninhados de pontos, de um polígono com (o maior fator primo) lados do lado de fora até o menor fator primo do lado de dentro.
- Para o fator 2, as potências de 2 devem ser empilhadas como uma linha, depois um quadrado, depois uma linha de quadrados e assim por diante. Mesmo potências de 2 não devem ser giradas. Poderes ímpares de 2 devem ser rotacionados em torno de seus respectivos polígonos e devem ser empilhados verticalmente antes da rotação.
- Você pode orientar a imagem da maneira que desejar (embora eu prefira), mas todo polígono aninhado deve estar voltado para a mesma direção que qualquer outro polígono, com a única exceção dos poderes ímpares de 2.
- Você tem duas opções para tamanho da imagem e tamanho do ponto:
- O tamanho da imagem é estático e o tamanho do ponto diminui à medida que
n
aumenta (como na animação). - O tamanho do ponto é estático e o tamanho da imagem aumenta à medida que
n
aumenta.
- O tamanho da imagem é estático e o tamanho do ponto diminui à medida que
- As três primeiras camadas de polígonos devem ser distinguíveis dos polígonos vizinhos (ou seja, sem tocar), mas, considerando o tamanho das imagens em torno e ao redor
n=10000
, não há problema se as camadas depois começarem a tocar. Eu preferiria que não, mas pode ser inevitável caber em uma imagem que pode ser carregada no Stack Exchange. - A cor é opcional.
- A forma dos pontos depende de você. Se os quadrados são melhores para o seu idioma, use-os.
- Sem bônus, mas eu gostaria de ver alguém animar e colorir os diagramas como no post original.
Agradecimentos a Conor O'Brien, EasterlyIrk, Martin Ender, Kritixi Lithos, Mego, DJ McMayhem e El'endia Starman por sua ajuda na redação desta pergunta.
Esse código de golfe, então o código mais curto vence. Boa sorte e bom golfe!
n = n //= i
suposto sern//= i
?