Dessinez quelque chose qui ressemble à ceci:
En termes plus précis, tracez un cercle de rayon r, avec n espaces uniformément tangents de longueur l. Reliez les extrémités de ces lignes pour former un nouveau polygone régulier à n côtés.
Règles
r = rayon du cercle
n = nombre de lignes tangentes - doit être régulièrement espacé autour du cercle (n> = 3)
l = longueur latérale des lignes tangentes
Créez un programme qui accepte les arguments {r, n, l} et dessine la sortie requise.
Les unités sont en pixels.
Il n'y a aucune restriction à l'emplacement du dessin, tant qu'il est visible dans son intégralité.
L'image est assez explicite.
C'est le code-golf, donc le code le plus court en octets gagne!
code-golf
graphical-output
Stretch Maniac
la source
la source
Réponses:
Mathematica,
135132131 131123 octetsCe code attend l'entrée (via une invite) exactement comme spécifié dans la question: par exemple
{100, 6, 150}
. Il produit un graphique vectoriel, donc j'inclus un axe, comme spécifié dans les commentaires de l'OP.Les tangentes et le polygone sont en fait une seule bande de ligne, en traversant "polygone-coin, point tangent, polygone-coin, polygone-coin suivant, point tangent, polygone-coin ..."
Si ce n'était pas pour l'axe, je pourrais même le faire en 107 octets:
Des économies supplémentaires (en dehors de
Axes->1>0
) viennent du fait que je peux maintenant tout redimensionner parr
, ce qui simplifie l'appel àCircle
produire un cercle unitaire.la source
{0,0}~Circle~r
Python, 133 octets
La seule réponse à ce jour pour se conformer à la règle "Les unités sont en pixels" ...
Ajoutez
exitonclick()
à la fin si vous ne voulez pas que la fenêtre se ferme immédiatement.Production:
python tangentpoly.py <<< "20, 6, 30"
:python tangentpoly.py <<< "100, 8, 200"
:la source
for i in n*[0]:c(r,360/n);fd(l);bk(l)
->exec'c(r,360/n);fd(l);bk(l)'*n;
T-SQL
440483Je ne gagnerai aucun prix avec celui-ci, mais j'aime dessiner des images :)
Edit Expletive! Je viens de remarquer que j'ai foiré pour les polygones dessinés à travers le cercle. Fixé à un coût.
Exécuté avec les variables suivantes
Exécutez dans Sql Server Management Studio 2012+, il renverra ce qui suit dans l'onglet des résultats spatiaux.
Avec
avec
Développé
la source
MATLAB - 233 octets
Exemple de sortie de fonction pour
n = 8, r = 4, l = 6
(axes inclus pour indiquer la longueur de l'unité):Exemple de sortie de fonction pour
n = 1024, r = 4, l = 2
:la source
HTML + JavaScript (E6) 298
Pour tester, enregistrez en tant que fichier html et ouvrez avec FireFox. Insérez les paramètres r, n, l dans le champ de saisie, séparés par des virgules, puis tabulez.
Ou essayez jsfiddle
Exemple de sortie
la source