Ihre Aufgabe ist es, das in ASCII eingestellte Mandelbrot zu zeichnen. Es sollte ungefähr so aussehen
Die komplexe Zahl c
liegt in der Mandelbrot - Menge, wenn die Sequenz z(n+1) = z(n)^2 + c
, z(0) = 0
beschränkt bleibt. Für den Zweck dieser Herausforderung können Sie die Sequenz berücksichtigen, die für c
if begrenzt ist |z(32)| < 2
.
Zeichnen Sie den Mandelbrot-Satz in der komplexen Ebene von (-2 - i) bis (1 + i) und mit einer Mindestauflösung von 40 x 30 unter Verwendung von ASCII-Zeichen in Ihrer bevorzugten Sprache und mit möglichst wenigen Zeichen.
*
Antworten:
Unter der Annahme, dass der Maschinencode zählt, habe ich vor einiger Zeit ein Produkt geschrieben, das einen 320x200-Farb-Mandelbrot in 64 Bytes generiert - http://www.pouet.net/prod.php?which=53287
Hier ist der Code:
Kompilierte Version in base64:
quelle
sudo apt-get install dosbox; dosbox ./Microbrot.com
ich gefunden, als ich meinen Kiefer vom Boden hob. Das ist verdammt beeindruckend!C 988 Zeichen
Hier ist meine, die ein ASCII-Mandelbrot ausführt, das als ASCII-Mandelbrot in C geschrieben ist.
Oh .. und es hat auch interaktive Zoom-Funktionalität. (Drücken Sie die Zifferntasten 1-9, um den jeweiligen Bereich zu vergrößern.)
Ursprünglich hier veröffentlicht http://marquisdegeek.com/rnd_obs.php
quelle
Gemeiner Lisp - 195 Zeichen
Getestet mit sbcl und clisp. Ergebnis:
Leicht modifiziert aus dem B. Clementson- Blog .
quelle
Python,
146145143charMusste die Klausel (abs (x) <2) zum Bedingungsausdruck hinzufügen, um zu verhindern, dass Python über Überläufe hinwegfliegt. Aber ... das ist ein Grund, warum ich Salbei liebe ...
Salbei, 133char
Beispielausgabe (ab Python-Version)
quelle
15j
in der Python-Version verwendenr=range(-50,26)
. Dann ersetzenrange(-15,16)
mitr[35:66]
und ersetzenrange(-50,26)
mitr
.J , 61 Zeichen
55 für durch Leerzeichen getrennte 0/1 anstelle von Sternen.
quelle
BASH -
167165148Die
mb3
Datei:(kein abschließender Zeilenumbruch)
Führen Sie es in einem Terminal mit der Zeilenlänge 125 aus:
BASH -
214190Dies ist im Grunde derselbe Code wie unten, wobei die Berechnungen durch fest codierte Werte ersetzt wurden und das Bild um die x-Achse gedreht wurde.
Die folgende Version entsprach nicht vollständig den Regeln, die "von (-2 - i) bis (1 + i)" sprachen.
BASH -
263261260236Nutze diese Quelle, Luke:
In diesem Code wird nur Ganzzahlarithmetik verwendet, sodass BASH keine zusätzlichen Hilfsmittel für Gleitkomma-Berechnungen benötigt ...
quelle
x=;y=
. Shift-Operatoren haben eine niedrigere Priorität als Addition und Multiplikation, sodass keine Klammern um>>
den linken Operanden erforderlich sind . Und Sie können{
...}
anstelle vondo
... verwendendone
, wie Digital Trauma in seinem Tipp empfiehlt . Und Sie können mehrere Ausdrücke in eine arithmetische Auswertung einfügen, indem Sie sie einfach mit trennen,
.(x*x-y*y)>>12
. Sie ändern nichts.Ruby, 95 Zeichen
Beispielausgabe:
quelle
Haskell, 130
Ausgabe:
quelle
Hier ist eine Antwort auf ein Kaffeeskript, die auf node.js ausgeführt wird: In Schwarzweiß:
Farbe hinzufügen:
quelle
Mathematica 56
Mathematica 77
Mathematica 77
quelle
GraphicsGrid@ImageData@Binarize@MandelbrotSetPlot[ImageResolution->40]/.{1->" ",0->"*"}
Es waren 84 Zeichen und die Ausgabe ist sowieso nicht so schön wie Ihre.Perl, 153 Zeichen
Ausgabe: Ich kann kein Bild veröffentlichen, da ich ein neuer Benutzer bin. Daher werde ich versuchen, den Text der Ausgabe zu veröffentlichen.
quelle
C # - 304 Zeichen
Wenn ich codiere, codiere ich mit Lesbarkeit und ansprechender Formatierung. Ich habe mich übergeben und das geschrieben.
Ich bin sicher, dass meine Lösung verbessert werden kann, aber als Referenz werde ich sie veröffentlichen. Beachten Sie, dass die Windows-Konsole das Bild komprimiert.
quelle
Haskell: 340 Zeichen
Nun, da ich keine Antwort von haskell sehe, poste ich meine, ich habe versucht, sie von dem, was ich bisher getan habe, zu minimieren. Ich bin sicher, ich kann es viel reduzieren. Aber hier ist der erste Versuch:
Und hier ist das Ergebnis:
OK - Inspiriert von einem animierten, verschleierten C-Code auf HN ist hier eine animierte Version:
Kopieren / Einfügen, einen rufhc mandel.hs machen, viel Spaß!
Hier ist die Art des Ergebnisses nach 50 Iterationen:
Und ein Link zu einem besser lesbaren Code:
http://yannesposito.com/Scratch/en/blog/Haskell-Mandelbrot/
quelle
J, 70
Zeigt die Mitglieder der Gruppe als
1
, die übrigen als an0
. Die berechneten Abstände weisen jeweils eine Breite von zwei Zeichen auf, um bei den meisten Schriftarten ein größtenteils quadratisches Pixel zu erhalten.quelle
QBasic, 222 Zeichen. Nicht so kurz, aber QBasic ist eine ziemlich ausführliche Sprache. Außerdem habe ich mit einer anscheinend korrekteren Version aktualisiert
Die Ausgabe erfolgt wie im folgenden Bild.
quelle
SpecBAS 201
Ich weiß, dass dies eine alte Frage ist, aber wir haben im BASIC-Programmierforum mit Perlins Ascii Brot gespielt, und hier ist meine - in SpecBAS (das ist eine Art Sinclair-BASIC-Interpreter) und es ist wirklich nur Text und eine Codezeile:
Ausgabe:
quelle
1FOR y=-29TO 30:FOR x=-10TO 89:LET m,r=0:FOR k=0TO 112:LET j=r^2-m^2-2+x/25,m=2*r*m+y/25,r=j,l=k&15,k=IIF(j^2+m^2>11,113,k):NEXT k:PRINT" .:-;!/>)|&IH%*#"(l+1);:NEXT x:NEXT y
.Perl - 193 Zeichen
Ergebnis
Ich denke, es hat vor ein paar Jahren den verschleierten Perl-Wettbewerb gewonnen.
quelle
Python, 115.
Funktioniert nur auf 80x24 - Terminals, aber Sie können hinzufügen ,
print
nach dem ersten ,for
es zu beheben.Beispielausgabe (Mit zusätzlicher
print
Anweisung.):quelle
c ++ - 11 - 298 Zeichen
Vollgolffähige, nicht parametrisierte Version, die nur das tut, was benötigt wird:
Die Umsetzung ist völlig unauffällig. Ich sehe nur, was mit der komplexen Zeit (die leider ein wenig wortreich ist) getan werden kann.
Ungolfed und parametrisiert damit es Regionen kann
Ausgabe
quelle
GolfScript - 77
Es kann wahrscheinlich viel mehr golfen werden. Das Ergebnis ist eine Annäherung, weil ich ganze Zahlen verwenden muss.
Ausgabe:
Es dauert ungefähr 9 weitere Bytes, um Leerzeichen und Sterne zu verwenden:
quelle
GNU bc, 136 Bytes
Ausgabe:
quelle
CJam, 52 Bytes
Erläuterung:
quelle
Matlab, 96
quelle
Befunge, 266 Bytes
Probieren Sie es online!
Dies ist ein Mandelbrot-Renderer, den ich vor ein paar Jahren für eine Rosetta-Code- Einreichung implementiert habe . Da Befunge keinen Gleitkommawert hat, wird eine Form von 14-Bit-Festkomma-Arithmetik verwendet, die mit Ganzzahloperationen emuliert wird. Es gibt maximal 94 Iterationen mit dem ASCII-Zeichensatz als "Palette".
Dies wurde ursprünglich mit Blick auf die Portabilität und nicht auf die Größe implementiert, aber es sollte immer noch einigermaßen gut Golf spielen, wie es ist.
Beispielausgabe
quelle
Python 444
Hier ist eine von den Python-Entwicklern ,
die zwar nicht wirklich kurz ist,
aber eine Zeile ist, die ein hübscher Boss ist.
quelle
c ++ (260)
Golf Code:
Beispielausgabe:
quelle
Minkolang 0,9 ,
7774 Bytes (UNGÜLTIG)Diese Antwort ist ungültig , weil die Sprache erstellt wurde gut nach dieser Herausforderung, aber ich bin Entsendung es so , dass es in dieser Sprache eine Lösung ist. Macht es schön rasiert ab 3 Bytes woo!
Probieren Sie es hier aus.
Ausgabe
Erläuterung
Dies nutzt den internen Umgang von Python mit komplexen Zahlen aus, so dass ich
1~12$:;
(das Äquivalent von(-1)**0.5
in Python) einfach tun kann , um die imaginäre Einheit zu erhalten. Dann gibt es für die drei Schleifen verschachtelt, die Schleife durchy
,x
, undz=z^2+c
. Das Herausbrechen aus der innersten Schleife ist notwendig (und erfolgt durchd$~2`9&
), weil sonst die Zahlen so groß werden, dass sie werden(NaN+Nanj)
, was anscheinend eine Größe von weniger als 2 hat.quelle
Python 3, 185 Bytes
Übersetzung von Perl (193) mit einigen Verbesserungen
quelle
> <> 118 Bytes
Probieren Sie es online! Seien Sie gewarnt, es dauert ungefähr 25 Sekunden, um mit TIO zu starten. Seien Sie also geduldig!
Eher eine Selbstherausforderung als ein ernsthafter Einstieg. Erzeugt die folgende Ausgabe:
quelle
; # , 150.878 Bytes (nicht konkurrierend)
Es passt hier nicht :(
Ausgabe:
quelle