Compte tenu du nombre de sommets n ≥ 3
et de la "taille de pas" 1 ≤ m < n/2
(indiquant la distance entre deux sommets connectés), affichez une représentation graphique du polygramme régulier correspondant . Si le polygramme se compose de plusieurs boucles fermées, chaque boucle doit être rendue dans une couleur de ligne différente. (Si cela vous semble confus, les exemples ci-dessous devraient, espérons-le, clarifier les choses.)
Règles
Toute solution raisonnable au problème satisfera probablement ces règles automatiquement - elles sont juste là pour imposer des contraintes sur les paramètres de la sortie afin d’empêcher des réponses comme "Ce bloc noir est totalement un polygramme, mais vous ne pouvez pas le voir car J'ai défini une largeur de ligne supérieure à 9 000. "
- Vous pouvez rendre le polygramme dans un fichier (qui peut être écrit sur un disque ou dans le flux de sortie standard) ou l'afficher à l'écran.
- Vous pouvez utiliser des graphiques vectoriels ou raster. Si votre sortie est tramée, votre image doit avoir des dimensions de 400x400 pixels ou plus, et le rayon du polygramme (la distance du centre à chaque sommet) doit être compris entre 35% et 50% de la longueur du côté.
- Le rapport d'aspect du polygramme doit être 1 (de sorte que ses sommets se trouvent sur un cercle approprié) - la toile de l'image peut être rectangulaire.
- Les lignes du polygramme ne doivent pas être plus épaisses que 5% du rayon (et bien sûr, elles doivent avoir une épaisseur non nulle pour être visibles).
- Vous pouvez rendre des axes ou un cadre en plus du polygramme, mais rien d'autre.
- Vous pouvez choisir n'importe quelle couleur d'arrière-plan (solide).
- Pour les polygrammes composés de plusieurs boucles fermées, vous devez prendre en charge au moins 6 couleurs visuellement distinctes , qui doivent toutes être différentes de l'arrière-plan. (L'échelle de gris est fine, à condition que les nuances soient suffisamment réparties dans le spectre.) Votre code doit toujours fonctionner pour plus de 6 boucles, mais les couleurs ne doivent pas être distinguables pour les boucles supplémentaires (c'est-à-dire que vous pouvez également réutiliser couleurs des boucles précédentes à ce point).
Il s'agit du code golf, donc la réponse la plus courte (en octets) l'emporte.
Exemples
Voici toutes les sorties jusqu'à n = 16
(où la colonne correspond n
et la ligne à m
):
Cliquez pour une version plus grande.
À titre d'exemples pour les plus grands n
, voici (n, m) = (29, 11)
et (30, 12)
:
la source
Réponses:
MATLAB,
8581La fonction affiche un tracé à l'écran.
Résultat pour n = 30, m = 12:
la source
hold all
pistes menant au tracé suivant sont tracées en haut du premier ... Je ne sais pas si nous avons un consensus sur la réutilisabilité des fonctions à honnête.hold on
de toute façon de sauvegarder un octet; si vous ajoutez quatre octets, il devient réutilisable (clf\n
)hold
.hold all
enclf\nhold on
est-ce que cela résout le problème?CJam, 114
Il produit l'image au format ASCII PGM.
Vous pouvez l' essayer en ligne , mais la sortie est assez longue. Vous pouvez modifier
400
et199
en nombres plus petits pour réduire la taille de l'image.CJam n'a pas de concept d'images, de dessins, de lignes ou de formes, j'ai donc généré l'image dans une matrice carrée, pixel par pixel (un nombre représentant une nuance de gris pour chaque pixel).
Voici à quoi ressemble le résultat
30 12
:la source
Mathematica, 70 octets
Eh bien ... c'est mon implémentation de référence qui bat les deux soumissions jusqu'à présent. Je n'ai pas l'intention de gagner mon propre défi, j'espère donc que quelqu'un va battre cela.
La sortie est comme les tracés du défi lui-même, sauf que je ne supprime pas les axes ici:
la source