Sua tarefa é desenhar o mandelbrot definido em ascii. Deve parecer algo como
Os números complexos c
situa-se no conjunto mandelbrot, quando a sequência z(n+1) = z(n)^2 + c
, z(0) = 0
restos delimitada. Para o objetivo deste desafio, você pode considerar a sequência delimitada por c
if |z(32)| < 2
.
Plote o conjunto de mandelbrot no plano complexo de (-2 - i) a (1 + i) e uma resolução mínima de 40x30, usando caracteres ascii no seu idioma favorito, usando o mínimo de caracteres possível.
*
Respostas:
Supondo que o código da máquina conta, escrevi um produto há algum tempo que gera um Mandelbrot colorido de 320x200 em 64 bytes - http://www.pouet.net/prod.php?which=53287
Aqui está o código:
Versão compilada em base64:
fonte
sudo apt-get install dosbox; dosbox ./Microbrot.com
fui encontrado pegando minha mandíbula no chão. Isso é bastante impressionante!C, 988 caracteres
Aqui está o meu, que faz um mandelbrot ASCII, escrito como um mandelbrot ASCII, em C.
Ah .. e também possui a funcionalidade de zoom interativo. (pressione os números de teclado de 1 a 9 para ampliar a área respectiva)
Originalmente publicado aqui http://marquisdegeek.com/rnd_obs.php
fonte
Lisp comum - 195 caracteres
Testado com sbcl e clisp. Resultado:
Ligeiramente modificado do blog B. Clementson .
fonte
Python,
146145143charFoi necessário adicionar a cláusula (abs (x) <2) à expressão condicional para impedir que o Python voasse sobre os estouros. Mas ... essa é uma razão pela qual eu amo Sage ...
Sábio, 133char
Saída de amostra (da versão python)
fonte
15j
na versão python tambémr=range(-50,26)
. Substituarange(-15,16)
porr[35:66]
e substituarange(-50,26)
porr
.J , 61 caracteres
55 para 0/1 separado por espaço em vez de estrelas.
fonte
BASH -
167165148O
mb3
arquivo:(sem nova linha à direita)
Execute-o em um terminal com comprimento de linha 125:
BASH -
214190Basicamente, é o mesmo código abaixo, com os cálculos sendo substituídos por valores codificados e a imagem foi alterada em torno do eixo x.
A versão abaixo não se encaixava totalmente nas regras que quebram "de (-2 - i) a (1 + i)".
BASH -
263261260236Use esta fonte, Luke:
Esse código usa apenas aritmética inteira, portanto, o BASH não precisa de ajudantes adicionais para fazer matemática de ponto flutuante ...
fonte
x=;y=
. Os operadores de turno têm menor precedência do que adição e multiplicação, portanto, não há necessidade de parênteses ao redor>>
do operando do lado esquerdo. E você pode usar{
... em}
vez dedo
...done
, como recomenda o Digital Trauma em sua dica . E você pode colocar várias expressões em uma avaliação aritmética, basta separá-las com,
.(x*x-y*y)>>12
. Eles não mudam nada.Ruby, 95 caracteres
Saída de amostra:
fonte
Haskell, 130
Resultado:
fonte
Aqui está uma resposta de script de café em execução no node.js: em preto e branco:
Adicionando cor:
fonte
Mathematica 56
Mathematica 77
Mathematica 77
fonte
GraphicsGrid@ImageData@Binarize@MandelbrotSetPlot[ImageResolution->40]/.{1->" ",0->"*"}
mas eram 84 caracteres e a saída não é tão boa quanto a sua de qualquer maneira.Perl, 153 caracteres
Saída: Não consigo postar uma foto porque sou um novo usuário, por isso tentarei postar o texto da saída.
fonte
C # - 304 caracteres
Quando codifico, codifico com legibilidade e formatação bonita. Eu vomitei escrevendo isso.
Estou certo de que minha solução pode ser melhorada, mas como referência, eu a publicarei. Observe que o console do Windows esmaga a imagem.
fonte
Haskell: 340 char
Bem, como não vejo resposta haskell, posto a minha, tentei minimizá-la do que fiz até agora. Tenho certeza de que posso reduzi-lo bastante. Mas aqui está a primeira tentativa:
E aqui está o resultado:
OK - Inspirado por algum código C ofuscado e animado no HN, aqui está uma versão animada:
Copie / cole, faça um runghc mandel.hs, divirta-se!
Aqui está o tipo de resultado após 50 iterações:
E um link para um código mais legível:
http://yannesposito.com/Scratch/en/blog/Haskell-Mandelbrot/
fonte
J, 70
Exibe os membros do conjunto como
1
, o restante como0
. Espaça cada ponto calculado com dois caracteres de largura, para manter um pixel principalmente quadrado com a maioria das fontes.fonte
QBasic, 222 caracteres. Não é tão curto, mas o QBasic é uma linguagem bastante detalhada. Também atualizei com uma versão aparentemente mais correta
A saída é como na imagem a seguir.
fonte
SpecBAS 201
Sei que essa é uma pergunta antiga, mas estamos brincando com o ascii brot de Perlin no fórum de programação do BASIC, e aqui está o meu - no SpecBAS (que é um tipo de intérprete do Sinclair BASIC) e é realmente apenas texto, e um linha de código:
Resultado:
fonte
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 caracteres
Resultado
Eu acho que venceu o concurso ofuscado perl há alguns anos atrás.
fonte
Python, 115.
Funciona apenas em terminais 80x24, mas você pode adicionar
print
depoisfor
para corrigi-lo.Saída de amostra (com
print
instruções adicionais .):fonte
c ++ - 11 - 298 caracteres
Versão totalmente não-parametrizada e totalmente adaptada ao golfe, que faz apenas o necessário:
A implementação é completamente normal. Apenas vendo o que pode ser feito usando o tempo complexo nativo (que é, infelizmente, um pouco prolixo).
Ungolfed e parametrizado para que ele possa fazer regiões
Resultado
fonte
GolfScript - 77
Provavelmente pode ser jogado muito mais. O resultado é uma aproximação, porque eu tenho que usar números inteiros.
Resultado:
São necessários mais 9 bytes para fazer uso de espaços e estrelas:
fonte
GNU bc, 136 bytes
Resultado:
fonte
CJam, 52 bytes
Explicação:
fonte
Matlab, 96
fonte
Anterior, 266 bytes
Experimente online!
Este é um renderizador Mandelbrot que eu implementei alguns anos atrás para um envio do Código Rosetta . Como o Befunge não tem ponto flutuante, ele usa uma forma aritmética de ponto fixo de 14 bits emulada com operações inteiras. Possui no máximo 94 iterações com o conjunto de caracteres ASCII como "paleta".
Isso foi originalmente implementado tendo em mente a portabilidade, e não o tamanho, mas ainda deve ser razoavelmente bem.
Saída de amostra
fonte
Python 444
Aqui está um dos desenvolvedores de python ,
que , embora não seja muito curto,
é uma linha que é bastante importante.
fonte
c ++ (260)
Código de golfe:
Exemplo de saída:
fonte
Minkolang 0.9 ,
7774 bytes (INVÁLIDO)Esta resposta é inválida porque o idioma foi criado bem após esse desafio, mas estou publicando para que haja uma solução nesse idioma. Tornando-o bonito raspado 3 bytes woo!
Experimente aqui.
Resultado
Explicação
Isso tira proveito do manuseio interno de números complexos do Python, para que eu possa fazer
1~12$:;
(o equivalente(-1)**0.5
no Python) para obter a unidade imaginária. Depois, há três nested loops For, que percorrery
,x
, ez=z^2+c
. É necessário romper o loop mais interno (e feito pord$~2`9&
) porque, caso contrário, os números ficarão tão grandes que se tornarão(NaN+Nanj)
, o que aparentemente tem uma magnitude menor que 2.fonte
Python 3, 185 bytes
Tradução do perl (193) com algumas melhorias
fonte
> <> , 118 bytes
Experimente online! Esteja avisado que leva cerca de 25 segundos para executar o TIO, portanto, seja paciente!
Mais um desafio próprio do que uma entrada séria. Produz a seguinte saída:
fonte
; # , 150.878 bytes (não competitivo)
Não se encaixa aqui :(
Resultado:
fonte