Votre tâche est de dessiner le mandelbrot défini en ascii. Il devrait ressembler à quelque chose comme
Le nombre complexe c
se trouve dans l'ensemble de Mandelbrot, lorsque la séquence z(n+1) = z(n)^2 + c
, z(0) = 0
reste limitée. Pour les besoins de ce défi, vous pouvez considérer la séquence bornée par c
if |z(32)| < 2
.
Tracez le jeu de mandelbrot sur le plan complexe de (-2 - i) à (1 + i), avec une résolution minimale de 40x30, en utilisant des caractères ascii dans votre langue préférée, en utilisant le moins de caractères possible.
*
Réponses:
En supposant que le code machine compte, j’ai écrit il ya quelque temps une prod qui génère un Mandelbrot 320 couleurs en 64 octets - http://www.pouet.net/prod.php?which=53287
Voici le code:
Version compilée en base64:
la source
sudo apt-get install dosbox; dosbox ./Microbrot.com
me retrouvait en train de ramasser ma mâchoire du sol. C'est sacrément impressionnant!C, 988 caractères
Voici le mien, qui fait un mandelbrot ASCII, écrit en mandelbrot ASCII, en C.
Oh .. et il a également une fonctionnalité de zoom interactif. (appuyez sur les numéros de clavier 1 à 9 pour effectuer un zoom avant sur la zone respective)
A l'origine posté ici http://marquisdegeek.com/rnd_obs.php
la source
Lis commun - 195 caractères
Testé avec sbcl et clisp. Résultat:
Légèrement modifié à partir du blog de B. Clementson .
la source
Python,
146145143charIl a fallu ajouter la clause (abs (x) <2) à l'expression conditionnelle pour empêcher Python de s'envoler contre les débordements. Mais ... c'est une raison pour laquelle j'aime Sage ...
Sauge, 133char
Exemple de sortie (à partir de la version python)
la source
15j
la version python aussir=range(-50,26)
. Puis remplacezrange(-15,16)
parr[35:66]
et remplacezrange(-50,26)
parr
.J , 61 caractères
55 pour 0/1 séparé par espace au lieu d'étoiles.
la source
BASH -
167165148Le
mb3
fichier:(pas de nouvelle ligne)
Exécutez-le dans un terminal avec une longueur de ligne de 125:
BASH -
214190Il s'agit en gros du même code que ci-dessous, les calculs étant remplacés par des valeurs codées en dur et l'image étant inversée autour de l'axe des x.
La version ci-dessous ne correspond pas parfaitement aux règles qui cassent "de (-2 - i) à (1 + i)".
BASH -
263261260236Utilisez cette source, Luke:
Ce code utilise uniquement l'arithmétique des nombres entiers. Par conséquent, BASH n'a pas besoin d'aide supplémentaire pour effectuer des calculs en virgule flottante ...
la source
x=;y=
. Les opérateurs de décalage ont une priorité inférieure à celle de l’addition et de la multiplication, il n’est donc pas nécessaire de mettre entre parenthèses l’>>
opérande gauche. Et vous pouvez utiliser{
…}
au lieu dedo
…done
, comme le conseille Digital Trauma dans son conseil . Et vous pouvez mettre plusieurs expressions dans une évaluation arithmétique, séparez-les simplement,
.(x*x-y*y)>>12
. Ils ne changent rien.Ruby, 95 caractères
Exemple de sortie:
la source
Haskell, 130
Sortie:
la source
Voici une réponse de coffee-script sur node.js: En noir et blanc:
Ajout de couleur:
la source
Mathematica 56
Mathematica 77
Mathematica 77
la source
GraphicsGrid@ImageData@Binarize@MandelbrotSetPlot[ImageResolution->40]/.{1->" ",0->"*"}
mais c'était 84 caractères et la sortie n'est pas aussi belle que la votre.Perl, 153 caractères
Sortie: Je ne peux pas publier une image car je suis un nouvel utilisateur. Je vais donc essayer de poster le texte de la sortie.
la source
C # - 304 caractères
Quand je code, je code avec une lisibilité et une belle mise en forme. J'ai vomi en écrivant ceci.
Je suis sûr que ma solution peut être améliorée mais pour référence je la posterai. Notez que la console Windows écrase l'image.
la source
Haskell: 340 caractères
Eh bien, comme je ne vois pas de réponse haskell, je poste le mien, j’ai essayé de le minimiser par rapport à ce que j’ai fait jusqu’à présent. Je suis sûr que je peux le réduire beaucoup. Mais voici le premier essai:
Et voici le résultat:
OK - Inspiré par du code C obscurci sur HN, voici une version animée:
Copier / coller, faire un runghc mandel.hs, profitez-en!
Voici le genre de résultat après 50 itérations:
Et un lien vers un code plus lisible:
http://yannesposito.com/Scratch/en/blog/Haskell-Mandelbrot/
la source
J, 70
Affiche les membres de l'ensemble comme
1
, les autres comme0
. Les espaces calculés pointent deux caractères de large, de manière à conserver un pixel essentiellement carré avec la plupart des polices.la source
QBasic, 222 caractères. Pas si court, mais QBasic est un langage assez prolixe. En outre, j'ai mis à jour avec une version apparemment plus correcte
La sortie est comme dans l'image suivante.
la source
SpecBAS 201
Je sais que celle-ci est une vieille question, mais nous avons joué avec le groupe ascii de Perlin dans le forum de programmation BASIC, et voici le mien - dans SpecBAS (qui est une sorte d’interprète Sinclair BASIC) et c’est vraiment un texte, et un seul. ligne de code:
Sortie:
la source
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 caractères
Résultat
Je pense qu’il a remporté le concours de Perl obscurci il ya quelques années.
la source
Python, 115.
Fonctionne uniquement sur les terminaux 80x24, mais vous pouvez ajouter
print
après le premierfor
correctif.Exemple de sortie (avec
print
instruction supplémentaire .):la source
c ++ - 11 - 298 caractères
Version entièrement golfée et non paramétrée qui ne fait que ce qui est requis:
La mise en œuvre est complètement anodine. Il suffit de voir ce qui peut être fait en utilisant le temps complexe natif (qui, hélas, est un peu verbeux).
Non golfé et paramétré pour pouvoir faire des régions
Sortie
la source
GolfScript - 77
On peut probablement jouer au golf beaucoup plus. Le résultat est approximatif car je dois utiliser des entiers.
Sortie:
Il faut environ 9 octets supplémentaires pour utiliser des espaces et des étoiles:
la source
GNU bc, 136 octets
Sortie:
la source
CJam, 52 octets
Explication:
la source
Matlab, 96
la source
Befunge, 266 octets
Essayez-le en ligne!
Il s'agit d'un moteur de rendu Mandelbrot que j'ai mis en place il y a quelques années pour la soumission de code Rosetta . Puisque Befunge n’a pas de virgule flottante, il utilise une forme arithmétique à virgule fixe de 14 bits émulée avec des opérations entières. Il comporte 94 itérations au maximum, le jeu de caractères ASCII constituant la "palette".
Cela a été implémenté à l'origine avec la portabilité à l'esprit plutôt que la taille, mais il devrait quand même être raisonnablement bien joué tel qu'il est.
Exemple de sortie
la source
Python 444
En voici une des développeurs python ,
qui n’est certes pas très courte, mais
qui est plutôt jolie.
la source
c ++ (260)
Code de golf:
Exemple de sortie:
la source
Minkolang 0.9 ,
7774 octets (INVALID)Cette réponse est invalide car la langue a été créée bien après ce défi, mais je la poste afin qu’il existe une solution dans cette langue. Ce qui rend jolie rasé 3 octets woo!
Essayez ici.
Sortie
Explication
Cela tire parti de la gestion interne des nombres complexes par Python. Je peux donc simplement faire
1~12$:;
(l’équivalent de(-1)**0.5
Python) pour obtenir l’unité imaginaire. Ensuite , il y a trois boucles imbriquées Pour boucle qui , à traversy
,x
etz=z^2+c
. La rupture de la boucle la plus interne est nécessaire (et effectuée pard$~2`9&
) car sinon, les nombres deviennent si grands qu'ils deviennent(NaN+Nanj)
, ce qui a apparemment une magnitude inférieure à 2.la source
Python 3, 185 octets
Traduction de perl (193) avec quelques améliorations
la source
> <> , 118 octets
Essayez-le en ligne! Soyez averti, il faut environ 25 secondes pour utiliser TIO, alors soyez patient!
Plus d'un défi personnel qu'une entrée sérieuse. Produit la sortie suivante:
la source
; # , 150 878 octets (sans compétition)
Cela ne convient pas ici :(
Sortie:
la source