Die Herausforderung besteht darin, die Blume des Lebens (die nach Ansicht einiger eine heilige geometrische Figur ist) in der Sprache Ihrer Wahl genau darzustellen.
Der Entwurf besteht aus einer Anordnung von Kreisen und Teilkreisen mit Radius 1, deren Zentren auf einem Dreiecksgitter der Teilung 1 angeordnet sind, plus einem größeren Kreis mit Radius 3, der sie umgibt.
Das Design kann beliebig skaliert werden, es ist jedoch ein Fehler von maximal 2% aus mathematisch korrekten Gründen zulässig. Wenn Sie Rastergrafiken verwenden, wird der Durchmesser der kleinen Kreise effektiv auf mindestens etwa 100 Pixel begrenzt.
Da dies Codegolf ist, gewinnt der kürzeste Code (Bytes).
code-golf
ascii-art
graphical-output
Benjamin Spector
quelle
quelle
Antworten:
Mathematica,
177173128124120 BytesDie Hauptidee ist, das Ergebnis aus sechs gedrehten Versionen davon zusammenzusetzen:
Dies ist wiederum ein rechteckiger Tisch aus identischen Kreisbögen mit zwei abgeschnittenen Ecken. Wenn wir die Scherung entfernen und jeden Kreismittelpunkt mit einem darstellen
#
, möchten wir die Kreise grundsätzlich in diesem Muster verteilen:Diese Kanten werden abgeschnitten, indem
-3 < x-y < 4
den 2D-Indizes die Bedingung auferlegt wird (da der Wert vonx-y
entlang der Diagonalen konstant ist) und die Scherung durch Multiplikation dieserx
undy
nicht orthogonaler Basisvektoren, die das gesuchte Gitter überspannen, erfolgt.Diese besondere Ausrichtung der nicht gedrehten Bögen erweist sich als die kürzeste, da sich beide Enden des Bogens gleichmäßig teilen,
Pi
so dass der Bogen ausgedrückt werden kann alsPi/{6,2}
(alle anderen Bögen würden entweder ein zusätzliches Minuszeichen oder Ganzzahlen im Zähler erfordern).quelle
OpenSCAD, 228 Bytes
Das Folgende ist eine Version, mit der jemand die Parameter r (Radius) und w (Breite der Ringe) einstellen kann.
Diese Version ist genau 246 Zeichen.
Ein Teil dieses Codes ist technisch nicht erforderlich, lässt ihn jedoch eher wie das Bild aussehen.
quelle
Error: Error: Parse error on line 1: ...x(k))o();circle(9);};}}}q(2);o(27); -----------------------^ Expecting 'TOK_ID', '}', 'TOK_IF', '!', '#', '%', '*', got ';'
Mathematica 263 Bytes
Mit @ MartinEnders Beitrag nicht wirklich konkurrenzfähig, aber ich hatte trotzdem Spaß daran. Ich lasse die Blütenblätter einen zufälligen Spaziergang machen! Das Blütenblatt dreht sich zufällig um 60 Grad um einen der Endpunkte, der ebenfalls zufällig ausgewählt wird. Ich prüfe, ob das rotierende Ende des Blütenblattes außerhalb der großen Scheibe liegt, und wenn ja, läuft die Rotation in die andere Richtung.
Hier ist der nachfolgende Code, den ich für die Animation verwendet habe.
Ich habe irgendwo gelesen, dass zweidimensionale Irrwege irgendwann zum Ursprung zurückkehren müssen. Es scheint, als ob ein paar tausend Schritte das Füllen der großen Scheibe garantieren.
quelle
Sqrt[3]
ist3^.5
. Sie müssen erst definieren, wann ese
zum ersten Mal verwendet wird, und Sie können diesen Trick verwenden , um ein Byte darauf zu speichernv={e=0{,},{0,2}}
. Sie können auch eine Infix-Notation wiee~c~6
oder verwendene~Disk~6
undArcTan@@Subtract@@v
sollten gleichbedeutend mit seinArcTan@@(#-#2)&@@v
.JavaScript (ES6) / SVG, 299 Byte
Es werden mehrere Bogenpaare unterschiedlicher Länge erzeugt und dann gedreht.
quelle