Bei der Recherche für eine andere Herausforderung, die ich formuliere, bin ich auf einen Cayley-Graphen gestoßen , insbesondere auf diesen . Da bin ich einer der Top - ascii-art Herausforderung Autoren, natürlich musste ich dafür eine ASCII - Art Herausforderung machen.
Ihre Herausforderung besteht darin, diese ASCII-Grafik eines Cayley-Diagramms der freien Gruppe auf zwei Generatoren wie folgt zu erstellen:
+
+++
+ | +
++-+-++
+ | +
+ | +
+++ | +++
+ | | | +
++-+----+----+-++
+ | | | +
+++ | +++
+ | +
+ | +
+++ | +++
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+ | | | +
+++ | | | +++
+ | | | | | +
++-+----+-----------+-----------+----+-++
+ | | | | | +
+++ | | | +++
+ | | | +
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+ +++ | +++ +
+++ + | + +++
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+ | + | + | +
+++ | +++ | +++ | +++
+ | | | + | + | | | +
++-+----+----+-++ | ++-+----+----+-++
+ | | | + | + | | | +
+++ | +++ | +++ | +++
+ | + | + | +
+ | | | +
+++ | | | +++
+ | + | | | + | +
++-+-++ | | | ++-+-++
+ | + | | | + | +
+ | | | | | +
+++ | | | | | +++
+ | | | | | | | +
++-+----+-----------+--------------------------+--------------------------+-----------+----+-++
+ | | | | | | | +
+++ | | | | | +++
+ | | | | | +
+ | + | | | + | +
++-+-++ | | | ++-+-++
+ | + | | | + | +
+++ | | | +++
+ | | | +
+ | + | + | +
+++ | +++ | +++ | +++
+ | | | + | + | | | +
++-+----+----+-++ | ++-+----+----+-++
+ | | | + | + | | | +
+++ | +++ | +++ | +++
+ | + | + | +
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+++ + | + +++
+ +++ | +++ +
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+ | | | +
+++ | | | +++
+ | | | | | +
++-+----+-----------+-----------+----+-++
+ | | | | | +
+++ | | | +++
+ | | | +
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+++ | +++
+ | +
+ | +
+++ | +++
+ | | | +
++-+----+----+-++
+ | | | +
+++ | +++
+ | +
+ | +
++-+-++
+ | +
+++
+
Eingang
Keine Eingabe, es sei denn, für die Ausführung Ihrer Sprache ist ausdrücklich eine Eingabe erforderlich.
Ausgabe
Die oben gezeigte ASCII-Grafikdarstellung.
MD5-Hashes
Da dies eine ziemlich große Ausgabe ist, finden Sie hier einige MD5-Hashes mit Beispielen für Ausgabeformen (alle sind UTF-8 ohne Stückliste), um Ihre Arbeit zu überprüfen:
- Quadratische
CR/LF
Abstände , Zeilenvorschübe und abschließende Zeilenumbrüche954B93871DAAE7A9C05CCDF79B00BF3C
- dies ist die oben verwendete Darstellung. - Quadratisches Leerzeichen,
CR/LF
Zeilenvorschub, kein Zeilenumbruch -28405EF91DA305C406BD03F9275A175C
- Quadratische
LF
Abstände , Zeilenvorschübe und abschließende Zeilenumbrüche -8CA65FB455DA7EE5A4C10F25CBD49D7E
- Quadratisches Leerzeichen,
LF
Zeilenvorschub, kein Zeilenumbruch -FDB1547D68023281BB60DBEC82C8D281
- Keine nachgestellten Leerzeichen,
CR/LF
Zeilenvorschübe und nachgestellten Zeilenumbrüche -77FDE8CE5D7BD1BDD47610BA23264A19
- Keine nachgestellten Leerzeichen,
CR/LF
Zeilenvorschübe, keine nachgestellten Zeilenumbrüche -EAD390C3EFD37F0FCACE55A84B793AB5
- Keine nachgestellten Leerzeichen,
LF
Zeilenvorschübe und nachgestellten Zeilenumbrüche -1F6CAB740F87881EB2E65BED65D08C36
- Keine nachgestellten Leerzeichen,
LF
Zeilenvorschübe, keine nachgestellten Zeilenumbrüche -7D41CE1E637619FEA9515D090BFA2E9C
- Wenn es einen zusätzlichen MD5 gibt, den Sie zum Vergleich haben möchten, lassen Sie es mich bitte wissen und ich werde ihn erstellen und die Herausforderung aktualisieren.
Regeln
- Führende oder nachfolgende Zeilenumbrüche oder Leerzeichen sind optional, sofern die Zeichen selbst korrekt ausgerichtet sind.
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig. Bei einer Funktion können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Fügen Sie nach Möglichkeit einen Link zu einer Online-Testumgebung hinzu, damit andere Benutzer Ihren Code ausprobieren können!
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
code-golf
ascii-art
kolmogorov-complexity
fractal
AdmBorkBork
quelle
quelle
-
/|
s(2<<n)-n-2
eher der Formel folgen, als(1<<n)-1
was meine ursprüngliche Vermutung gewesen wäre.Antworten:
JavaScript (ES6),
204195188180 ByteQuadratisches Leerzeichen, LF- Zeilenumbrüche
undkein Zeilenumbruch, obwohl ich den MD5 nicht überprüft habe.Parametrisierte Version für
222216207199 Bytes. Erläuterung: Die Ausgabegröße beträgt 9119 ASCII-Zeichen, einschließlich 46 Zeilenumbrüchen. (Bei der parametrisierten Version wird die Ausgabegröße einschließlich der nachgestellten Newline berechnet.) Jedes Zeichen wird einzeln bestimmt, indem zunächst geprüft wird, ob eine Newline fällig ist. Andernfalls wird in der Mitte des Finales eine Funktion für die Koordinaten relativ zum Ursprung aufgerufen Diagramm. Die Funktion vergleicht den Punkt rekursiv mit den nächstgelegenen Kreuzen jeder Größe zum Punkt und gibt das entsprechende Zeichen zurück, je nachdem, ob festgestellt wird, dass der Punkt in der Mitte oder auf der Achse eines Kreuzes liegt.quelle
Röda ,
284280238234 BytesProbieren Sie es online!
Dies ist eine anonyme Funktion. Ich habe Zeilenumbrüche anstelle von Semikolons verwendet, so dass es sehr schön formatiert ist!
Die rekursive Funktion
f
erstellt das Diagramm in einem zweidimensionalen Arrayt
, das dann in der letzten Zeile gedruckt wird.Ich habe keine Möglichkeit gefunden,
27,12,5,2,1
in wenigen Bytes zu rechnen , daher sind sie hart codiert.quelle
b_shiftl
gibt einen Operator, aber er ist zu lang, um in diesem Programm verwendet zu werden.10000110001200020001
->1168671727
bezweifle, dass Sie mit weniger als 2 Bytes konvertieren und teilen können, obwohl ...Holzkohle ,
5043 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Ich habe ursprünglich verschiedene Überlegungen und Drehungen versucht, aber sie haben entweder nicht getan, was ich wollte, oder waren in einigen Fällen fehlerhaft. Ich habe dann einen Nested-Loop-Ansatz ausprobiert, aber jetzt bin ich zu dieser iterativen Methode übergegangen, bei der abhängig von der Anzahl der Potenzen von 3, durch die die Schrittzahl teilbar ist, mehrere Linien zwischen den einzelnen inneren Kreuzen gezogen werden. Es kann sogar leicht modifiziert werden, um einen Größenparameter zu akzeptieren, der nur 4 Byte kostet:
Edit: Ich habe seitdem herausgefunden, wie ich
RotateShutterOverlap
diese Aufgabe lösen soll, aber ärgerlicherweise benötige ich 44 Bytes:Wenn
RotateShutterOverlap
eine Ganzzahl mit variablen Rotationen akzeptiert würde, würde dies diese auf 40 Bytes reduzieren:Die Verwendung eines Rotationslistenparameters dauert 45 Byte:
quelle
05AB1E , 620 Bytes
Probieren Sie es online!
Ich habe das Muster nur in Viertel geschnitten, die Symbole in Basis-4 konvertiert, 1/4 des Musters in Basis-214 komprimiert und es dann über die Symmetrielinien gespiegelt. Ich arbeite mit dem eigentlichen Algorithmus an etwas Klügerem, aber bis ich fertig bin, werde ich das hier tun.
quelle
05AB1E
Antwort, die ich je gesehen habe. xD Normalerweise ist es 6,20 statt 620 mit Antworten in dieser Sprache. ;)Python 3, 264 Bytes
Verwendet ein Paar gegenseitig rekursiver Funktionen. F zeichnet die Linien und P fügt die '+' ein. Kann mehr golfen werden, aber fürs Erste nicht rechtzeitig.
quelle
C 236 Bytes
Erstellen Sie die Zeichentabelle einfach rekursiv, bevor Sie sie anzeigen.
Probieren Sie es online!
Vielen Dank an @Neil, dass ich festgestellt habe, dass die Länge der Zweige einer tatsächlichen Regel entspricht.
quelle