Ce défi est inspiré de ce fantastique diagramme animé (merci à flawr de l'avoir posté dans le chat).
Étant donné une entrée n, dessinez tous ses facteurs premiers sous forme de polygones imbriqués de points, comme spécifié.
Par exemple, étant donné le nombre 357 = 17x7x3, vous disposez de 3 points dans un triangle, 7 versions de ces triangles dans un heptagone et 17 versions de ces heptagones dans un 17-gon. Bref, des polygones imbriqués allant du plus grand facteur premier à l'extérieur au plus petit à l'intérieur. Pour 357, votre réponse devrait ressembler un peu à ceci (avec ou sans couleur):
Chaque polygone de chaque nombre premier >= 3ne doit pas tourner autour du diagramme.
La seule exception est la prime 2, en particulier pour les puissances impaires de 2. Comme vous pouvez le voir dans l'exemple 376 = 47x2x2x2ci-dessous, les 8s tournent et ne sont pas des lignes simples de 2s, mais sont des piles verticales pour 4s dans un carré. Même les pouvoirs de 2, disposés en carrés, n'ont pas besoin d'être tournés de cette façon.
En fait, 448 = 7x2x2x2x2x2x2a un diagramme qui ressemble à un heptagone de 64s, et 64est disposé en un carré de carrés de carrés, mais sans rotation.
Deux autres exemples sont 440 = 11x5x2x2x2et 432 = 3x3x3x2x2x2x2. On voit 440qu'avec une puissance impaire de 2, a tourné 8s, mais 432avec une puissance paire de 2ne tourne pas ses 16s.
Et enfin, voici un exemple minimal 10 = 5x2, sans couleur que j'ai simulé avec Python et son turtlemodule.
Le défi
- Étant donné une entrée
noù1 <= n <= 10000, affiche une image de ses polygones de facteurs imbriqués. - Les règles sont:
- L'image est constituée de polygones imbriqués de points, d'un polygone avec (le plus grand facteur premier) côtés à l'extérieur jusqu'au plus petit facteur premier à l'intérieur.
- Pour le facteur 2, les puissances de 2 doivent s'empiler en ligne, puis en carrés, puis en ligne de carrés, etc. Même les pouvoirs de 2 ne doivent pas être tournés. Les puissances impaires de 2 doivent être tournées autour de leurs polygones respectifs, et elles doivent être empilées verticalement avant la rotation.
- Vous pouvez orienter l'image comme vous le souhaitez (bien que je préfère vers le haut), mais chaque polygone imbriqué doit être orienté dans la même direction que tout autre polygone à la seule exception des puissances impaires de 2.
- Vous avez deux options pour la taille de l'image et la taille des points:
- La taille de l'image est statique et la taille des points diminue à mesure qu'elle
naugmente (comme dans l'animation). - La taille du point est statique et la taille de l'image augmente à mesure qu'elle
naugmente.
- La taille de l'image est statique et la taille des points diminue à mesure qu'elle
- Les trois premières couches de polygones doivent être distinguées des polygones voisins (c'est-à-dire ne pas se toucher), mais compte tenu de la taille des images à et autour
n=10000, ce n'est pas grave si les couches après commencent à se toucher. Je préfèrerais que ce ne soit pas le cas, mais il peut être inévitable de tenir sur une image téléchargeable sur Stack Exchange. - La couleur est facultative.
- La forme des points dépend de vous. Si les carrés conviennent mieux à votre langue, utilisez-les.
- Pas de bonus, mais j'aimerais voir quelqu'un animer et colorier les diagrammes comme dans le post d'origine.
Merci à Conor O'Brien, EasterlyIrk, Martin Ender, Kritixi Lithos, Mego, DJ McMayhem et El'endia Starman pour leur aide dans la rédaction de cette question.
Ce code golf, donc le code le plus court gagne. Bonne chance et bon golf!







n = n //= icensé êtren//= i?