Diese geometrische Spirale sieht kompliziert aus, ist aber ziemlich einfach zu zeichnen. nimm das folgende Kästchen:
Zeichnen Sie eine gerade Linie zwischen der Ecke des Kästchens und einem festgelegten Abstand über der nächsten Ecke gegen den Uhrzeigersinn.
Fahren Sie mit diesem Muster nach innen fort und halten Sie dabei immer den festgelegten Abstand von der Ecke der nächsten Zeile ein. Hier sind noch ein paar Zeilen.
Wie Sie sehen, nähert sich die Spirale im weiteren Verlauf dem Zentrum, und die von Ihnen gezeichneten Kästchen beginnen sich zu drehen. Beachten Sie, dass der Abstand unabhängig vom Winkel konstant bleibt.
Die Herausforderung
Die Inspiration (und auch danke an die wundervolle Person, die mich mit diesem Konzept bekannt gemacht hat <3)
Bei einer numerischen (möglicherweise gebrochenen) Eingabe von 1 bis 25 schreiben Sie ein Bild auf eine Festplatte, die dieses Muster verwendet, oder zeigen Sie die Ausgabe auf dem Bildschirm an, wobei der Abstand von jeder Ecke der Abstand einer Anfangsseite des Felds geteilt durch die Eingabe ist . Fahren Sie mit dem Muster nach innen fort, bis der Abstand von der angegebenen Ecke länger als die Länge der nächsten Seite ist.
Regeln
- Sie können für diese spiralförmige Erstellung möglicherweise keine integrierten Funktionen verwenden, aber Sie können integrierte Funktionen für die Bildverarbeitung verwenden.
- Wenn Sie auf eine Festplatte schreiben, müssen Sie ein Bild in den Formaten JPG, GIF, TIFF, PBM, PPM und PNG ausgeben.
- Die anfängliche Seitenlänge muss mindestens 500 Pixel betragen.
- Die erste Ecke kann eine beliebige sein.
- Die Standard-Regelungslücken sind wie immer unzulässig.
quelle
Antworten:
Schuhe (Ruby) 163 Bytes
Shoes ist ein Ruby-basiertes GUI-Toolkit.
Ungolfed
Ausgänge n = 4 und n = 25
Beachten Sie, dass die Form immer in einem Dreieck endet, das weiter zu einer Linie zusammenfällt. Das Ersetzen
size-1
mitsize
hat keinen Einfluss auf das Erscheinungsbild der Ausgabe und würde 2 Bytes einsparen, aber ich habe es für die theoretische Richtigkeit belassen.Ausgabe n = 300
Inspiriert von einem Kommentar von OP, sehen die höheren Zahlen großartig aus!
quelle
line
in der unteren Zeile erforderlich?*
wandelt das durch Umwandlung der komplexen Zahlen in vier Parameter gebildete Vier-Elemente-Array fürline
. Die Standardsyntax besagt,line(*(a[j-1].rect+a[j].rect))
dass das Entfernen der Klammern und das Hinzufügen eines Leerzeichens bereits eine Einsparung von einem Byte bedeutet. Wenn Sie das Leerzeichen entfernen, versucht Ruby,line
mit dem Inhalt der Klammern zu multiplizieren. Dies macht keinen Sinn und verursacht einen Fehler. Hier kann man Golf spielen, aber nicht so. Ich werde es später untersuchen.upto
. Haben Sie auch versucht, das('')
After zu entfernenask
? Ich habe es nicht getestet, aber es kann unnötig seinJava,
10561005985948522508507504502501493492488474465458 BytesDank CoolestVeto und ECS für weitere Möglichkeiten zur Größenreduzierung. :-)
quelle
Groovy,
412411403398 Bytesquelle
Caught: groovy.lang.MissingMethodException: No signature of method: static s.div() is applicable for argument types: (java.lang.Float) values: [25.0] Possible solutions: is(java.lang.Object), wait(), run(), run(), find(), any() groovy.lang.MissingMethodException: No signature of method: static s.div() is applicable for argument types: (java.lang.Float) values: [25.0] Possible solutions: is(java.lang.Object), wait(), run(), run(), find(), any() at s$1.<init>(s.groovy:3) at s.run(s.groovy:2)