/* Configuration */
var QUESTION_ID = 23423; // Obtain this from the url
// It will be like https://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 17419; // This should be the user ID of the challenge author.
/* App */
var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page;
function answersUrl(index) {
return "https://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER;
}
function commentUrl(index, answers) {
return "https://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER;
}
function getAnswers() {
jQuery.ajax({
url: answersUrl(answer_page++),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
answers.push.apply(answers, data.items);
answers_hash = [];
answer_ids = [];
data.items.forEach(function(a) {
a.comments = [];
var id = +a.share_link.match(/\d+/);
answer_ids.push(id);
answers_hash[id] = a;
});
if (!data.has_more) more_answers = false;
comment_page = 1;
getComments();
}
});
}
function getComments() {
jQuery.ajax({
url: commentUrl(comment_page++, answer_ids),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
data.items.forEach(function(c) {
if (c.owner.user_id === OVERRIDE_USER)
answers_hash[c.post_id].comments.push(c);
});
if (data.has_more) getComments();
else if (more_answers) getAnswers();
else process();
}
});
}
getAnswers();
var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;
var OVERRIDE_REG = /^Override\s*header:\s*/i;
function getAuthorName(a) {
return a.owner.display_name;
}
function process() {
var valid = [];
answers.forEach(function(a) {
var body = a.body;
a.comments.forEach(function(c) {
if(OVERRIDE_REG.test(c.body))
body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>';
});
var match = body.match(SCORE_REG);
if (match)
valid.push({
user: getAuthorName(a),
size: +match[2],
language: match[1],
link: a.share_link,
});
else console.log(body);
});
valid.sort(function (a, b) {
var aB = a.size,
bB = b.size;
return aB - bB
});
var languages = {};
var place = 1;
var lastSize = null;
var lastPlace = 1;
valid.forEach(function (a) {
if (a.size != lastSize)
lastPlace = place;
lastSize = a.size;
++place;
var answer = jQuery("#answer-template").html();
answer = answer.replace("{{PLACE}}", lastPlace + ".")
.replace("{{NAME}}", a.user)
.replace("{{LANGUAGE}}", a.language)
.replace("{{SIZE}}", a.size)
.replace("{{LINK}}", a.link);
answer = jQuery(answer);
jQuery("#answers").append(answer);
var lang = a.language;
lang = jQuery('<a>'+lang+'</a>').text();
languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang, user: a.user, size: a.size, link: a.link};
});
var langs = [];
for (var lang in languages)
if (languages.hasOwnProperty(lang))
langs.push(languages[lang]);
langs.sort(function (a, b) {
if (a.lang_raw.toLowerCase() > b.lang_raw.toLowerCase()) return 1;
if (a.lang_raw.toLowerCase() < b.lang_raw.toLowerCase()) return -1;
return 0;
});
for (var i = 0; i < langs.length; ++i)
{
var language = jQuery("#language-template").html();
var lang = langs[i];
language = language.replace("{{LANGUAGE}}", lang.lang)
.replace("{{NAME}}", lang.user)
.replace("{{SIZE}}", lang.size)
.replace("{{LINK}}", lang.link);
language = jQuery(language);
jQuery("#languages").append(language);
}
}
body {
text-align: left !important;
display: block !important;
}
#answer-list {
padding: 10px;
width: 290px;
float: left;
}
#language-list {
padding: 10px;
width: 290px;
float: left;
}
table thead {
font-weight: bold;
}
table td {
padding: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.sstatic.net/Sites/codegolf/all.css?v=ffb5d0584c5f">
<div id="language-list">
<h2>Shortest Solution by Language</h2>
<table class="language-list">
<thead>
<tr><td>Language</td><td>User</td><td>Score</td></tr>
</thead>
<tbody id="languages">
</tbody>
</table>
</div>
<div id="answer-list">
<h2>Leaderboard</h2>
<table class="answer-list">
<thead>
<tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr>
</thead>
<tbody id="answers">
</tbody>
</table>
</div>
<table style="display: none">
<tbody id="answer-template">
<tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>
</tbody>
</table>
<table style="display: none">
<tbody id="language-template">
<tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>
</tbody>
</table>
Respostas:
Calculadora gráfica Sharp EL-9300, 296 bytes
Esta foi a minha calculadora gráfica da escola secundária, iniciada há 20 anos! Lembro-me de escrever um gerador de mandelbrot para ele na época. E com certeza, ele ainda está lá na memória NV:
Demorou cerca de 90 minutos para renderizar.
Isso é totalmente não-destruído. Tenho certeza de que poderia economizar um pouco de espaço, mas só queria compartilhar essa curiosidade histórica!
Eu amo que as únicas declarações de controle disponíveis são
goto
s.Aqui está uma foto. Não tenho outros meios para obter a saída gráfica:
fonte
zx²+zy²>4
não poderia ser issoAbs(x)>2
?Me deparei com isso outro dia. Eu não aceito crédito por isso, mas caramba, é incrível:
Python 2:
http://preshing.com/20110926/high-resolution-mandelbrot-in-obfuscated-python/
fonte
LaTeX, 673 bytes
A imagem PDF consiste em unidades quadradas coloridas com tamanho 1bp × 1bp.
Ungolfed
fonte
Montagem do DOS x86,
208177173 bytesO binário completo, em HEX, que eu criei manualmente, é:
A imagem de exemplo é:
A fonte completa no ASM legível é bastante longa (usei isso para descobrir como estava codificando esse otário):
Ele foi projetado para compilar com o TASM, é executado no MCGA e aguarda um pressionamento de tecla antes de finalizar o programa. As cores são apenas a paleta padrão do MCGA.
EDIT: Otimizado, agora ele retrocede (mesma imagem) e salva 31 bytes!
EDIÇÃO 2: Para atenuar o OP, recriei o binário manualmente. Ao fazer isso, eu também raspei outros 4 bytes. Eu documentei cada etapa do processo, mostrando todo o meu trabalho para que qualquer pessoa possa acompanhar se realmente quiser, aqui (aviso, é chato e muito longo): http://lightning.memso.com/media/perm/ mandelbrot2.txt
Eu usei algumas regexs no EditPadPro, para encontrar todas as
; Final: ...
entradas no arquivo e despejá-las como hexadecimais em um arquivo .com. O binário resultante é o que você vê na parte superior desta postagem.fonte
#define
instrução predefinida em C. É apenas demorado substituir manualmente tudo.Java,
505405324 bytesApenas um cálculo padrão,
com golfitudeagora com golfitude extra.Golfe:
Com quebras de linha:
fonte
f.setSize(n,668);
- depende muito do tema usado, mas eu aceito.double
ondefloat
poderia ser usado se você tentouJFrame
=>Frame
raspa 2 caracteres. Embora você não possa mais fechar a janela. ;)final
modificador. E você não deve omitir as importações para ser um envio completo.Javascript (ECMAScript 6) -
315308 caracteresn
para variar o tamanho da imagem (e o número de iterações).f(87);f(0);f(0);
chamadas (próximo ao final) para alterar os valores de cores RGB. (f(8);f(8);f(8);
está em escala de cinza.)Com
f(8);f(23);f(87);
:fonte
d=document
economizaria um pouco mais. (? Além disso, existe uma razão para criar a tela faz codegolf assumir um certo nível de HTML disponíveis?)document.createElement`canvas`
e salvar 2 bytes. O mesmo que ogetContext`2d`
.J, 73 bytes
Edite , alguns explicando:
fonte
(0,?$~99 3)
qual produz 100 trigêmeos rgb, um para cada nível. Por causa da aleatoriedade, você pode obter menos de 100 trigêmeos, então alguns níveis terão uma transição mais suave (mas ainda terão cores diferentes).Mathematica,
2141912151930Desde a versão 10.0, há um built-in: (19 bytes)
Para estar em conformidade com os requisitos do intervalo de coordenadas, são necessários 11 bytes adicionais. (30 bytes)
Um estojo enrolado à mão:
fonte
{b, -2, 2, .01}, {a, -2, 2, .01}
é mais curto e mais perto das regrasThe fractal coordinates range from approximately -2-2i to 2+2i
.Python com Pylab + Numpy, 151 bytes
Eu não aguentava ver uma entrada em Python sem DQ, mas acho que realmente me superei nessa e reduzi para 153 caracteres!
Além disso, notavelmente, a penúltima linha gera quatro avisos de tempo de execução distintos, um novo recorde pessoal!
fonte
import
e*
, e não definirf
nada, deve ser menor, a menos que eu tenha entendido algo errado, o que é possível. Você também deve alterá-lo para que 0 iterações e 1 iterações sejam distintas (atualmente elas são cinza).wc
, mas talvez tentestat -c %s
. As margens superior e inferior pretas fazem parte da imagem?from numpy import*
vez deimport numpy as n
e emmgrid
vez den.mgrid
.C + Allegro 4.2.2 - 248 bytes
Resultado:
fonte
... allegro.h>
ex=-1, ...
? Suponho que o Notepad ++ conte como\r\n
=0D 0A
.0.01
pode ser digitado como.01
.Windows PowerShell (v4), 299 bytes
Instruções
Comente
fonte
lt2
paralt4
torná-lo um "conjunto de mandelbrot" em vez da imagem que você tem agora. Muitos pontos do conjunto são engolidos pelas faixas coloridas.a*a+b*b
não é #sqrt(a*a+b*b)
-lt4
. O que é bom - obrigado. Atualizei minha resposta com código e imagem corrigidos. (Terá que repensar minha compreensão do que está fazendo, já que estou perdendo alguma coisa).Python + PIL , 166 bytes
Saída (será aberta no visualizador * .bmp padrão):
fonte
y
laço.r=range(d*d)
, usex/d
ex%d
para x e y.Image.show()
salva implicitamente um arquivo temporário).BBC Basic (228 bytes)
E os idiomas que ninguém nunca ouviu falar no código de golfe? Provavelmente poderia ser otimizado, mas não estou exatamente onde - melhorias possíveis. Baseado em http://rosettacode.org/wiki/Mandelbrot_set#BBC_BASIC , mas tentei codificá-lo o máximo possível.
O
>
símbolo na imagem é rápido e é gerado automaticamente após a execução do programa.fonte
NEXT Y,X
?APL, 194 caracteres / bytes *
Isto é para Dyalog APL com
⎕IO ⎕ML←1 3
A maior parte do espaço é ocupada por chamadas da API para mostrar um bitmap em uma janela (linhas 2, 3, 4)
Se houvesse um atalho para isso, o código seria reduzido para 60 caracteres (linha 1)
PLZ AJUDA A ENCONTRAR ATALHO KTHX
Versão não destruída (apenas linha 1)
Captura de tela:
(A versão freeware é executada no OS X no Wine. Sim, eu sou barato assim.)
*: O Dyalog possui seu próprio conjunto de caracteres de byte, com os símbolos da APL mapeados para os valores superiores de 128 bytes, para que todo o código possa ser armazenado em 194 bytes. Todas as afirmações nesta nota de rodapé são possivelmente verdadeiras. Mantenha a calma e continue jogando golfe.
fonte
Mathematica 10.0, 19 caracteres
MandelbrotSetPlot
é uma nova função no Mathematica 10.0.fonte
R,
199211 caracteresSolução antiga com 199 caracteres:
Com recuo:
Edit: Solução com 211 caracteres que colore a parte interna do conjunto e a parte externa da primeira camada de maneira diferente:
Com recuo:
fonte
rainbow()
:)Java - Processando (271 bytes)
Expandido:
fonte
TI-80 BASIC,
125106 bytesBaseado na resposta do Digital Trauma.
fonte
GLSL - 225 bytes:
Definindo variáveis no código (242 bytes):
Veja-o no ShaderToy
Isso requer que uma textura de paleta adequada seja carregada como
iChannel0
. (A coloração aqui é da textura "pixel aleatório" no ShaderToy).fonte
Oitava (
212136 bytes)(Agora, incluindo algumas idéias devido a @ChrisTaylor.)
Com espaço em branco:
Resultado:
Para converter para o Matlab, altere "
m+=abs(z)<2
" para "m=m+(abs(z)<2)
". [+3 bytes]Para fazer a proporção 1: 1, adicione "
;axis image
". [+11 bytes]Minha primeira resposta (212 bytes):
fonte
;axis image
". Isso é necessário para se qualificar?Applesoft BASIC,
302286280 bytesIsso seleciona pontos aleatórios para desenhar, para que funcione para sempre e talvez nunca preencha o plano completo.
Acontece que o Applesoft BASIC é realmente perdoa a falta de espaço. Apenas um espaço é necessário em todo o programa.
Saída após 14 horas:
GIF:
Antes de jogar golfe:
Nota:
POKE 49234,0
(no Applesoft BASIC) coloca a máquina no modo gráfico completo.Uma versão otimizada para monitores em preto e branco:
Saída após 12 horas:
Uma versão que funcionará em GW-BASIC (DOS):
fonte
gnuplot 110 (105 sem novas linhas)
Entrada obrigatória no gnuplot. Isso já foi feito inúmeras vezes, mas este é do zero (não que seja difícil). Eu gosto de como o
gnuplot
golfe comanda intrinsecamente :)ungolfed:
No entanto, estou profundamente decepcionado com a entrada de números complexos.
x*{1,0}+y*{0,1}
deve ser a maneira mais triste existente de construir um número complexo.Opa, a imagem:
Defina amostras de amostras mais altas para obter uma melhor resolução. Também podemos dizer
unset tics
eunset colorbox
para uma imagem pura, mas acho que esta versão se qualifica muito bem.fonte
*{1,0}
é a unidade e é mais uma maneira de dizer boliche*1
, e provavelmente pode ser descartada. (não testado)Matlab (89 bytes)
Resultado -
Não atende ao requisito de que as células internas devam ser pretas ou brancas, mas pode ser atendido por (1) usando em
imshow(K)
vez deimagesc(K)
(requer 1 byte a menos, mas precisa da caixa de ferramentas de processamento de imagem) ou (2) anexandocolormap hot
(requer mais 12 bytes).Versão não destruída -
fonte
C-C
lugar do meu0*e(401)
. Além disso, você não está usandoN
. E podemos ficar um pouco mais curtos usando minham+=abs(z)<2
ideia no lugar da suaK(~K&abs(Z)>2)=j
.colormap jet
ecolormap hot
ambos estão incorretos - eles têm apenas 64 cores distintas.colormap(hot(101))
não parece visualmente distinguível para mim.colormap([0,0,0;jet(100)])
é talvez aceitável, mas duvidoso.K=K+abs(Z)<2
significaK=((K+abs(Z))<2)
. (Então, eu estava errado sobre a estimativa de um byte para eliminar+=
.)JavaScript + HTML5 (356B)
(Nota: as linhas que terminam com '//' são adicionadas aqui para facilitar a leitura)
Versão com desempenho (375B):
Versão lenta (356B): remova o 'var' e os parâmetros na função interna para que o escopo global seja usado.
Experimente: http://jsfiddle.net/neuroburn/Bc8Rh/
fonte
var w,
no início e mudefunction(x,i,j,k,l,c,o)
parafunction()
.Javascript, 285B
Baseado no meu código e em algumas melhorias nos MT0s código , reduzi para 285B em cores:
em ação: http://jsfiddle.net/acLhe/7/
foi: Coffeescript, 342B
O Coffeescript deve ser legível: - / veja em ação: http://jsfiddle.net/acLhe/6/
fonte
QBasic, QuickBasic, QB64 -
156153Paleta padrão do DOS:
fonte
Tcl / Tk, 316
322324336348349351352353354355Agora, uma versão mais curta usando trigêmeos em cores com três letras #RGB (em vez de trigêmeos #RRGGBB), o que resulta em cores diferentes.
E um pouco mais de golfe.
Tcl / Tk, 325
331333345357358360361362364365Eu acho que venceria se o critério fosse de beleza!
Apresentação:
fonte
rename set s
no topo e substituindo todos osset
s
Excel VBA,
251246224223221 bytesEconomizou 5 bytes graças a ceilingcat Economizou 23 bytes graças a Taylor Scott
Resultado:
Eu fiz uma versão que fez isso há muito tempo, mas tinha muitos extras, como deixar o usuário escolher a cor básica e a matemática fácil de seguir. Jogar golfe foi um desafio interessante. O
Color
método usa1E6
como um meio para obter uma ampla gama de cores, desde as cores são válidos0
para2^24
. Configurando para10^6
dar boas áreas de contrasteExplicação / Formatação automática:
Também brinquei com
D=999
ej=1 to 998
para obter uma imagem muito maior e mais precisa. Os resultados são irrelevantes para o desafio, porque são muito grandes, mas são arrumados.fonte
j<99
porj<D
.()
do subnome , deve mudar(j<99)
para(j<d)
e pode, com o objetivo de fazer com que as células quadradas sejam usadas apenasCells.RowHeight=48
no lugar deCells.RowHeight=9
,Cells.ColumnWidth=1
- isso dificulta a mexer na sua saída, mas foi aceito como válido pela comunidade -RowHeight
truque do post de dicas do VBA e pretendia integrá-lo depois de receber todas as minhas lindas fotos. Isso foi um bom pedaço, obrigado.2^20
com1E6
Perl + GD, 264
Golfed deste código
fonte
Flutuador, 620 pixels
Uma língua que inventei quando me inspirei no meu próprio desafio, bem como na linguagem esotérica Piet.
fonte