Einführung
Ähnlich wie die Fibonacci-Sequenz ist die Padovan-Sequenz ( OEIS A000931 ) eine Folge von Zahlen, die durch Hinzufügen vorheriger Ausdrücke in der Folge erzeugt wird. Die Anfangswerte sind definiert als:
P(0) = P(1) = P(2) = 1
Das 0., 1. und 2. Glied sind alle 1. Die Wiederholungsbeziehung ist unten angegeben:
P(n) = P(n - 2) + P(n - 3)
Somit ergibt sich folgende Reihenfolge:
1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 16, 21, 28, 37, 49, 65, 86, 114, 151, 200, 265, 351, ...
Wenn Sie diese Zahlen als Seitenlänge von gleichseitigen Dreiecken verwenden, erhalten Sie eine schöne Spirale, wenn Sie sie alle zusammen platzieren, ähnlich wie bei der Fibonacci-Spirale:
Bild mit freundlicher Genehmigung von Wikipedia
Aufgabe
Ihre Aufgabe ist es, ein Programm zu schreiben, das diese Spirale durch grafische Ausgabe wiederherstellt, wobei die Eingabe dem jeweiligen Begriff entspricht.
Regeln
- Ihr Beitrag muss mindestens bis zur 10. Amtszeit bearbeitet werden können (9)
- Ihre Einreichung muss ein vollständiges Programm oder eine vollständige Funktion sein, die Eingaben entgegennimmt und ein grafisches Ergebnis anzeigt (entweder ein Bild oder Grafiken usw.).
- Sie müssen in Ihrer Einreichung einen Nachweis Ihrer grafischen Ausgabe vorlegen
- Die Drehung der Ausgabe ist in 60-Grad-Vielfachen mit derselben Darstellung zulässig
- Es ist auch erlaubt, gegen den Uhrzeigersinn zu fahren
- Standardlücken sind verboten
Sie können davon ausgehen, dass die Eingabe> 0 ist und das richtige Eingabeformat angegeben wird.
Wertung
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes. Ein frohes neues Jahr euch allen!
quelle
Antworten:
Mathematica,
119108 BytesVielen Dank an Martin Ender für die Einsparung von 11 Bytes!
Unbenannte Funktion, die ein positives ganzzahliges Argument (1-indiziert) verwendet und die Grafikausgabe zurückgibt. Beispielausgabe für die Eingabe
16
:Entwickelt gleichzeitig mit der Matlab-Antwort von flawr, aber mit vielen Ähnlichkeiten im Design - einschließlich der Definition
I^(2/3)
der sechsten Wurzel der Einheit! Einfacher zu lesende Version:Zeile 1 definiert die Padovan-Sequenz
±n = P(n)
. Zeile 4 erstellt ein verschachteltes Array komplexer Zahlen, diez
auf dem Weg definiert werden. Der letzte Teil±# z^(#+{2,4,1})&~Array~#
erzeugt viele Tripel, von denen jedes den Vektoren entspricht, die wir zeichnen müssen, um das entsprechende Dreieck zu vervollständigen (das±#
steuert die Länge, während dasz^(#+{2,4,1})
die Richtungen steuert). Zeile 3 beseitigt die Listenverschachtelung und berechnet dann die laufenden Summen der komplexen Zahlen, um sie von Vektoren in reine Koordinaten umzuwandeln. Zeile 2 konvertiert dann komplexe Zahlen in geordnete Paare reeller Zahlen und gibt die entsprechende polygonale Linie aus.quelle
Matlab,
202190 BytesAusgabe für
N=19
(1-basierte Indizierung):Erläuterung
Die grobe Idee besteht im Wesentlichen darin, mit komplexen Zahlen zu arbeiten. Dann zeigen die Kanten der Dreiecke immer in Richtung einer sechsten Einheitswurzel.
quelle
PHP + SVG, 738 Bytes
Ausgang für 16
quelle
$k%6==0
Kann sein$k%6<1
und$k%6==5
kann sein$k%6>4
.Python 3,
280, 262 Bytes18 Bytes gespart dank ovs
Golf gespielt:
Gleiches mit einigen Kommentaren:
Screenshot für
N=9
:quelle
dwitter 151
kann auf http://dwitter.net getestet werden (Vollbild verwenden)
Grundidee ist Logo Schildkröte, Golf. hat die P () -Funktion von oben gestohlen!
Ich stelle mir vor, dass durch Rekursion mehr Golf gespielt werden könnte, aber das ist nicht schlecht.
quelle
LOGO, 119 Bytes
Gebrauch, so etwas wie dies :
Beispielausgabe (kann nicht eingebettet werden, da es sich nicht um HTTPS handelt und das Hochladen nach imgur fehlgeschlagen ist)
quelle