Ausgehend von der Anzahl der Eckpunkte n ≥ 3
und der "Schrittgröße" 1 ≤ m < n/2
(die den Abstand zwischen zwei verbundenen Eckpunkten angibt) wird eine grafische Darstellung des entsprechenden regulären Polygramms ausgegeben . Wenn das Polygramm aus mehreren geschlossenen Schleifen besteht, muss jede Schleife in einer anderen Linienfarbe gerendert werden. (Wenn dies verwirrend klingt, sollten die folgenden Beispiele hoffentlich Abhilfe schaffen.)
Regeln
Jede vernünftige Lösung des Problems wird diese Regeln wahrscheinlich automatisch erfüllen - sie sind nur dazu da, die Parameter der Ausgabe einzuschränken, um Antworten wie "Dieser schwarze Block ist völlig ein Polygramm, aber Sie können es nicht sehen, weil Ich habe die Linienbreite auf über 9000 eingestellt. "
- Sie können das Polygramm entweder in eine Datei rendern (die auf eine Disc oder in den Standardausgabestream geschrieben werden kann) oder auf dem Bildschirm anzeigen.
- Sie können entweder Vektor- oder Rastergrafiken verwenden. Wenn die Ausgabe gerastert wird, muss das Bild hat Abmessungen von 400x400 Pixeln oder mehr und die Polygram des Radius (der Abstand von der Mitte zu jedem Scheitelpunkt) zwischen 35% und 50% der Seitenlänge sein muss.
- Das Seitenverhältnis des Polygramms muss 1 sein (damit seine Scheitelpunkte auf einem richtigen Kreis liegen) - die Leinwand des Bildes kann rechteckig sein.
- Die Linien des Polygramms dürfen nicht dicker als 5% des Radius sein (und natürlich müssen sie eine Dicke ungleich Null haben, um sichtbar zu sein).
- Sie können Achsen oder einen Rahmen zusätzlich zum Polygramm rendern, aber sonst nichts.
- Sie können eine beliebige (durchgezogene) Hintergrundfarbe auswählen.
- Für Polygramme, die aus mehreren geschlossenen Schleifen bestehen, müssen Sie mindestens 6 visuell unterschiedliche Farben unterstützen, die sich alle vom Hintergrund unterscheiden müssen. (Graustufen sind in Ordnung, vorausgesetzt, die Schattierungen sind im gesamten Spektrum ausreichend verteilt.) Ihr Code muss noch für mehr als 6 Schleifen funktionieren, die Farben müssen jedoch nicht für zusätzliche Schleifen unterscheidbar sein (dh Sie können diese auch wiederverwenden) Farben aus vorherigen Loops an diesem Punkt).
Dies ist Codegolf, daher gewinnt die kürzeste Antwort (in Bytes).
Beispiele
Hier sind alle Ausgaben bis n = 16
(wo die Spalte entspricht n
und die Zeile bis m
):
Klicken Sie für eine größere Version.
Als Beispiele für größere n
sind hier (n, m) = (29, 11)
und (30, 12)
:
quelle
Antworten:
MATLAB,
8581Die Funktion zeigt ein Diagramm auf dem Bildschirm an.
Ergebnis für n = 30, m = 12:
quelle
hold all
zum nächsten Plot über dem ersten gezogen werden ... Ich weiß nicht, ob wir einen Konsens über die Wiederverwendbarkeit von Funktionen haben ehrlich.hold on
sowieso sein , ein Byte zu speichern; Wenn Sie vier Bytes hinzufügen, wird es wiederverwendbar (clf\n
)hold
.hold all
zu wechseltclf\nhold on
, behebt das das Problem?CJam, 114
Das Bild wird im ASCII-PGM-Format ausgegeben.
Sie können es online ausprobieren , aber die Ausgabe ist ziemlich lang. Sie können
400
und199
zu kleineren Zahlen ändern , um die Bildgröße zu verringern.CJam kennt keine Bilder, Zeichnungen, Linien oder Formen. Daher habe ich das Bild in einer quadratischen Matrix Pixel für Pixel generiert (eine Zahl, die einen Grauton für jedes Pixel darstellt).
So sieht das Ergebnis aus
30 12
:quelle
Mathematica, 70 Bytes
Nun ... das ist meine Referenzimplementierung, die beide Einsendungen bisher übertrifft. Ich bin nicht darauf bedacht, meine eigene Herausforderung zu gewinnen, also hoffe ich, dass jemand dies schafft.
Die Ausgabe entspricht den Plots in der Challenge selbst, außer dass ich die Achsen hier nicht entferne:
quelle