Este desafío está inspirado en este fantástico diagrama animado (gracias a flawr por publicarlo en el chat).
Dada una entrada n
, dibuje todos sus factores primos como polígonos anidados de puntos, como se especifica.
Por ejemplo, dado el número 357 = 17x7x3
, usted organiza 3 puntos en un triángulo, 7 versiones de esos triángulos en un heptágono y 17 versiones de esos heptagones en un gon de 17. En resumen, los polígonos anidados van del factor primo más grande en el exterior al más pequeño en el interior. Para 357
, su respuesta debería verse un poco así (con o sin color):
>= 3
No se debe rotar cada polígono de cada primo alrededor del diagrama.
La única excepción es la prima 2
, específicamente para poderes extraños de 2
. Como puede ver en el ejemplo a 376 = 47x2x2x2
continuación, las 8
s giran y no son líneas simples de 2
s, sino que son pilas verticales para 4
s en un cuadrado. Incluso los poderes de 2
, dispuestos en cuadrados, no necesitan ser rotados de esta manera.
De hecho, 448 = 7x2x2x2x2x2x2
tiene un diagrama que se parece a un heptágono de 64
s, y 64
está organizado en un cuadrado de cuadrados de cuadrados, pero sin rotación.
Dos ejemplos más son 440 = 11x5x2x2x2
y 432 = 3x3x3x2x2x2x2
. Vemos que 440
con una potencia impar de 2, ha girado 8
s, pero 432
con una potencia par de 2
no gira su 16
s.
Y finalmente, aquí hay un ejemplo mínimo 10 = 5x2
, sin color del que me burlé con Python y su turtle
módulo.
El reto
- Dada una entrada
n
donde1 <= n <= 10000
, genera una imagen de sus polígonos de factor anidado. - Las reglas son:
- La imagen está compuesta de polígonos anidados de puntos, desde un polígono con lados (el factor primo más grande) en el exterior hasta el factor primo más pequeño en el interior.
- Para el factor 2, las potencias de 2 deben apilarse como una línea, luego un cuadrado, luego una línea de cuadrados, y así sucesivamente. Incluso las potencias de 2 no deben rotarse. Los poderes impares de 2 deben rotarse alrededor de sus respectivos polígonos, y deben apilarse verticalmente antes de la rotación.
- Puede orientar la imagen como quiera (aunque prefiero hacia arriba), pero cada polígono anidado debe estar orientado en la misma dirección que cualquier otro polígono, con la única excepción de poderes extraños de 2.
- Tiene dos opciones de tamaño de imagen y tamaño de punto:
- El tamaño de la imagen es estático y el tamaño del punto disminuye a medida que
n
aumenta (como en la animación). - El tamaño del punto es estático y el tamaño de la imagen crece a medida que
n
aumenta.
- El tamaño de la imagen es estático y el tamaño del punto disminuye a medida que
- Las primeras tres capas de polígonos deben distinguirse de los polígonos vecinos (es decir, no tocarse), pero teniendo en cuenta el tamaño de las imágenes en y alrededor
n=10000
, está bien si las capas comienzan a tocarse. Preferiría que no lo hicieran, pero puede ser inevitable encajar en una imagen que se puede cargar en Stack Exchange. - El color es opcional.
- La forma de los puntos depende de usted. Si los cuadrados son mejores para tu idioma, úsalos.
- Sin bonificaciones, pero me gustaría ver a alguien animar y colorear los diagramas como en la publicación original.
Gracias a Conor O'Brien, EasterlyIrk, Martin Ender, Kritixi Lithos, Mego, DJ McMayhem y El'endia Starman por su ayuda para escribir esta pregunta.
Este código de golf, por lo que gana el código más corto. ¡Buena suerte y buen golf!
fuente
n = n //= i
supone que esn//= i
?n = n // i
. Iré a arreglarlo y agregaré a la explicación mientras estoy en ello.