Zeichne etwas, das so aussieht:
Genauer gesagt, zeichnen Sie einen Kreis mit dem Radius r mit n Tangentenlinien der Länge l mit gleichmäßigen Abständen. Verbinden Sie die Enden dieser Linien, um ein neues n-seitiges reguläres Polygon zu bilden.
Regeln
r = Kreisradius
n = Anzahl der Tangenten - muss gleichmäßig um den Kreis verteilt sein (n> = 3)
l = Seitenlänge der Tangenten
Erstellen Sie ein Programm, das die Argumente {r, n, l} akzeptiert und die erforderliche Ausgabe zeichnet.
Einheiten sind in Pixel.
Es gibt keine Einschränkungen für die Position der Zeichnung, solange alles sichtbar ist.
Das Bild ist ziemlich selbsterklärend.
Dies ist Code-Golf, also gewinnt der kürzeste Code in Bytes!
code-golf
graphical-output
Stretch Maniac
quelle
quelle
Antworten:
Mathematica,
135132131123 BytesDieser Code erwartet die Eingabe (über eine Eingabeaufforderung) genau wie in der Frage angegeben: z
{100, 6, 150}
. Es wird eine Vektorgrafik erstellt, daher füge ich eine Achse hinzu, wie in den Kommentaren des OP angegeben.Sowohl die Tangenten als auch das Polygon sind tatsächlich ein einzelner Linienstreifen, indem "Polygonecke, Tangentenpunkt, Polygonecke, nächste Polygonecke, Tangentenpunkt, Polygonecke ..." durchlaufen werden.
Wenn die Achse nicht wäre, könnte ich dies sogar in 107 Bytes tun:
Zusätzliche Einsparungen (abgesehen von
Axes->1>0
) ergeben sich aus der Tatsache, dass ich jetzt alles neu skalieren kannr
, was den Aufruf zurCircle
Bildung eines Einheitskreises vereinfacht .quelle
{0,0}~Circle~r
Python, 133 Bytes
Die einzige Antwort, die bisher der Regel "Einheiten sind in Pixel" entspricht ...
exitonclick()
Zum Ende hinzufügen , wenn das Fenster nicht sofort geschlossen werden soll.Ausgabe:
python tangentpoly.py <<< "20, 6, 30"
::python tangentpoly.py <<< "100, 8, 200"
::quelle
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
440483Ich werde mit diesem keinen Preis gewinnen, aber ich zeichne gerne Bilder :)
Expletive bearbeiten ! Ich habe gerade bemerkt, dass ich es mit Polygonen vermasselt habe, die über den Kreis gezogen wurden. Auf Kosten behoben.
Wird mit den folgenden Variablen ausgeführt
Wenn Sie es in SQL Server Management Studio 2012+ ausführen, wird auf der Registerkarte "Räumliche Ergebnisse" Folgendes zurückgegeben.
Mit
mit
Erweitert
quelle
MATLAB - 233 Bytes
Beispielfunktionsausgabe für
n = 8, r = 4, l = 6
(Achsen zur Angabe der Längeneinheit):Beispielfunktionsausgabe für
n = 1024, r = 4, l = 2
:quelle
HTML + JavaScript (E6) 298
Speichern Sie zum Testen als HTML-Datei und öffnen Sie sie mit FireFox. Fügen Sie die Parameter r, n, l in das Eingabefeld ein, durch Kommas getrennt, und tippen Sie sie dann aus.
Oder versuchen Sie es mit jsfiddle
Beispielausgabe
quelle