/* 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>
Respuestas:
Calculadora gráfica Sharp EL-9300, 296 bytes
¡Esta era mi calculadora gráfica de secundaria , que funcionaba hace 20 años! Recuerdo haber escrito un generador de Mandelbrot para ese entonces. Y efectivamente, todavía está ahí en la memoria NV:
Tardó unos 90 minutos en renderizar.
Esto no tiene nada de golf. Estoy seguro de que podría ahorrar un poco de espacio, ¡pero solo quería compartir esta curiosidad histórica!
Me encanta que las únicas declaraciones de control disponibles son
goto
s.Aquí hay una foto. No tengo ningún otro medio para obtener la salida gráfica:
fuente
zx²+zy²>4
no podría ser esoAbs(x)>2
?Me encontré con esto el otro día. No me tomo el crédito por eso, pero maldición, es increíble:
Python 2:
http://preshing.com/20110926/high-resolution-mandelbrot-in-obfuscated-python/
fuente
LaTeX, 673 bytes
La imagen PDF consta de unidades cuadradas de color con un tamaño de 1 pb × 1 pb.
Sin golf
fuente
86 Asamblea DOS,
208177173 bytesEl binario completo, en HEX, que creé a mano, es:
La imagen de muestra es:
La fuente completa en ASM legible es bastante larga (usé esto para descubrir cómo estaba codificando este tonto):
Está diseñado para compilar con TASM, se ejecuta en MCGA y espera que se presione una tecla antes de finalizar el programa. Los colores son solo la paleta MCGA predeterminada.
EDITAR: ¡Lo optimicé, ahora dibuja hacia atrás (misma imagen) y ahorró 31 bytes!
EDIT 2: para calmar el OP, he recreado el binario a mano. Al hacerlo, también eliminé otros 4 bytes. Documenté cada paso del proceso, mostrando todo mi trabajo para que cualquiera pueda seguirlo si realmente lo desea, aquí (advertencia, es aburrido y muy largo): http://lightning.memso.com/media/perm/ mandelbrot2.txt
Usé un par de expresiones regulares en EditPadPro, para encontrar todas las
; Final: ...
entradas en el archivo y volcarlas como binario hexadecimal en un archivo .com. El binario resultante es lo que ves en la parte superior de esta publicación.fuente
#define
declaración predefinida en C. Solo lleva mucho tiempo reemplazarlo manualmente.Java,
505405324 bytesSolo un cálculo estándar,
con golfitudeahora con golfitude adicional.Golfizado:
Con saltos de línea:
fuente
f.setSize(n,668);
- depende en gran medida del tema utilizado, pero lo aceptaré.double
dóndefloat
podría usarse si lo intentarasJFrame
=>Frame
afeita 2 caracteres. Aunque ya no puedes cerrar la ventana. ;)final
modificador. Y no debe omitir las importaciones para ser una presentación completa.JavaScript (ECMAScript 6) -
315308 Caracteresn
para variar el tamaño de la imagen (y el número de iteraciones).f(87);f(0);f(0);
llamadas (cerca del final) para cambiar los valores de color RGB. (f(8);f(8);f(8);
es en escala de grises)Con
f(8);f(23);f(87);
:fuente
d=document
te ahorraría unos cuantos más. (Además, ¿hay alguna razón para crear el lienzo? ¿Codegolf supone un cierto nivel de HTML disponible?)document.createElement`canvas`
y guardar 2 bytes. Igual que elgetContext`2d`
.J 73 bytes
Editar , algunos explicando:
fuente
(0,?$~99 3)
que produce 100 tripletes rgb, uno para cada nivel. Debido a la aleatoriedad, es posible que obtenga menos de 100 trillizos, por lo que algunos niveles tendrán una transición más suave (pero aún tendrán diferentes colores).Mathematica,
2141912151930Desde la versión 10.0 hay un incorporado: (19 bytes)
Para cumplir con los requisitos del rango de coordenadas, se requieren 11 bytes adicionales. (30 bytes)
Una caja enrollada a mano:
fuente
{b, -2, 2, .01}, {a, -2, 2, .01}
es más corto y más cercano a las reglasThe fractal coordinates range from approximately -2-2i to 2+2i
.Python con Pylab + Numpy, 151 bytes
No podía soportar ver una entrada de Python sin DQ, pero creo que realmente me superé en esta, ¡y logré llegar a 153 caracteres!
Además, notablemente, la penúltima línea genera 4 advertencias de tiempo de ejecución distintas, ¡un nuevo récord personal!
fuente
import
y*
, y no definirf
nada debería ser más corto, a menos que haya entendido mal algo, lo cual es posible. También debe cambiarlo de manera tal que 0 iteraciones y 1 iteraciones estén diferenciadas (actualmente ambas son grises).wc
, pero tal vez intente en sustat -c %s
lugar. ¿Los bordes negros superior e inferior son parte de la imagen?from numpy import*
lugar deimport numpy as n
y enmgrid
lugar den.mgrid
.C + Allegro 4.2.2 - 248 bytes
Salida:
fuente
... allegro.h>
yx=-1, ...
? Supongo que Notepad ++ lo cuenta como\r\n
=0D 0A
.0.01
se puede escribir como.01
.Windows PowerShell (v4), 299 bytes
Instrucciones
Comentario
fuente
lt2
paralt4
que sea un "conjunto de mandelbrot" en lugar de la imagen que tienes ahora. Muchos puntos del conjunto son absorbidos por las bandas de color.a*a+b*b
nosqrt(a*a+b*b)
-lt4
. Lo cual es bueno, gracias. He actualizado mi respuesta con código corregido e imagen. (Habrá que replantear mi comprensión de lo que está haciendo, ya que me falta algo).Python + PIL , 166 bytes
Salida (se abrirá en el visor * .bmp predeterminado):
fuente
y
bucle.r=range(d*d)
, usex/d
yx%d
para x e y.Image.show()
guarda implícitamente un archivo temporal).BBC Basic (228 bytes)
¿Qué pasa con los idiomas que nadie escuchó en el golf de código? Lo más probable es que pueda optimizarse, pero aún no sé dónde: posibles mejoras. Basado en http://rosettacode.org/wiki/Mandelbrot_set#BBC_BASIC , pero intenté codificar el golf lo más posible.
El
>
símbolo en la imagen es rápido y se genera automáticamente después de ejecutar el programa.fuente
NEXT Y,X
?APL, 194 caracteres / bytes *
Esto es para Dyalog APL con
⎕IO ⎕ML←1 3
Las llamadas a la API ocupan la mayor parte del espacio para mostrar un mapa de bits en una ventana (líneas 2, 3, 4)
Si hubiera un acceso directo para hacerlo, el código se reduciría a 60 caracteres (línea 1)
PLZ AYUDA PARA ENCONTRAR SHORTCUT KTHX
Versión sin golf (solo línea 1)
Captura de pantalla:
(La versión gratuita se ejecuta en OS X con Wine. Sí, soy tan barato como eso).
*: Dyalog tiene su propio conjunto de caracteres de un solo byte, con los símbolos APL asignados a los valores superiores de 128 bytes, por lo que todo el código puede almacenarse en 194 bytes. Cada declaración en esta nota al pie es posiblemente cierta. Mantén la calma y sigue jugando al golf.
fuente
Mathematica 10.0, 19 caracteres
MandelbrotSetPlot
es una nueva función en Mathematica 10.0.fuente
R,
199211 caracteresAntigua solución con 199 caracteres:
Con sangría:
Editar: Solución con 211 caracteres que colorea el interior del conjunto y el exterior de la primera capa de manera diferente:
Con sangría:
fuente
rainbow()
:)Java - Procesamiento (271 bytes)
Expandido:
fuente
TI-80 BASIC,
125106 bytesBasado en la respuesta de Digital Trauma.
fuente
GLSL - 225 bytes:
Definición de variables en el código (242 bytes):
Véalo en ShaderToy
Esto requiere que se cargue una textura de paleta adecuada como
iChannel0
. (El color aquí es de la textura de "píxel aleatorio" en ShaderToy).fuente
Octava (
212136 bytes)(Ahora incluye algunas ideas debido a @ChrisTaylor).
Con espacios en blanco:
Salida:
Para convertir a Matlab, cambie "
m+=abs(z)<2
" a "m=m+(abs(z)<2)
". [+3 bytes]Para hacer la relación de aspecto 1: 1, agregue "
;axis image
". [+11 bytes]Mi primera respuesta (212 bytes):
fuente
;axis image
". ¿Se requiere eso para calificar?Applesoft BASIC,
302286280 bytesEsto selecciona puntos aleatorios para dibujar, por lo que se ejecutará para siempre y es posible que nunca llene el plano completo.
Resulta que Applesoft BASIC realmente perdona la falta de espacios. Solo se necesita un espacio en todo el programa.
Salida después de 14 horas:
GIF:
Antes de jugar al golf:
Nota:
POKE 49234,0
(en Applesoft BASIC) pone la máquina en modo gráfico completo.Una versión optimizada para pantallas en blanco y negro:
Salida después de 12 horas:
Una versión que funcionará en GW-BASIC (DOS):
fuente
gnuplot 110 (105 sin líneas nuevas)
Entrada obligatoria a gnuplot. Se ha hecho innumerables veces, pero esta es desde cero (no es que sea difícil). Me gusta cómo
gnuplot
golf sus comandos intrínsecamente :)sin golf:
Sin embargo, estoy profundamente decepcionado por la entrada de números complejos.
x*{1,0}+y*{0,1}
debe ser la forma más triste de construir un número complejo.Vaya, la imagen:
Establecer isosamples más alto para una mejor resolución. También podríamos decir
unset tics
yunset colorbox
para una imagen pura, pero creo que esta versión califica muy bien.fuente
*{1,0}
es la unidad y se parece más a una forma de decir de bolos de código*1
, y probablemente se puede descartar. (no probado)Matlab (89 bytes)
Salida -
No satisface el requisito de que las celdas internas deben ser blancas o negras, pero eso puede satisfacerse (1) usando en
imshow(K)
lugar deimagesc(K)
(requiere 1 byte menos pero necesita la caja de herramientas de procesamiento de imágenes) o (2) agregandocolormap hot
(requiere 12 más bytes).Versión sin golf -
fuente
C-C
en lugar de mi0*e(401)
. Además, no estás usandoN
. Y podemos acortarnos un poco usando mim+=abs(z)<2
idea en lugar de la tuyaK(~K&abs(Z)>2)=j
.colormap jet
ycolormap hot
ambos son incorrectos: solo tienen 64 colores distintos.colormap(hot(101))
No me parece visualmente distinguible.colormap([0,0,0;jet(100)])
es quizás aceptable pero dudoso.K=K+abs(Z)<2
significaK=((K+abs(Z))<2)
. (Así que estaba equivocado acerca de la estimación de un byte para eliminar+=
)JavaScript + HTML5 (356B)
(Nota: las líneas que terminan con '//' se agregan aquí para facilitar la lectura)
Versión de rendimiento (375B):
Versión lenta (356B): elimine la 'var' y los parámetros en la función interna para que se use el alcance global.
Pruébelo: http://jsfiddle.net/neuroburn/Bc8Rh/
fuente
var w,
al principio y cambiarfunction(x,i,j,k,l,c,o)
afunction()
.Javascript, 285B
Basado en mi código y algunas mejoras en el código MT0 , lo he reducido a 285B en color:
en acción: http://jsfiddle.net/acLhe/7/
era: Coffeescript, 342B
Se supone que Coffeescript es legible: - / verlo en acción: http://jsfiddle.net/acLhe/6/
fuente
QBasic, QuickBasic, QB64 -
156153Paleta DOS estándar:
fuente
Tcl / Tk, 316
322324336348349351352353354355Ahora, una versión más corta que usa trillizos de color de estilo de mano corta #RGB de 3 letras (en lugar de trillizos #RRGGBB), lo que da como resultado diferentes colores.
Y algo más de golf.
Tcl / Tk, 325
331333345357358360361362364365¡Creo que ganaría si el criterio fuera la belleza!
Presentación:
fuente
rename set s
en la parte superior y luego reemplazando todosset
pors
Excel VBA,
251246224223221 bytesGuardado 5 bytes gracias a ceilingcat Guardado 23 bytes gracias a Taylor Scott
Salida:
Hice una versión que hizo esto hace mucho tiempo, pero tenía muchos extras, como permitir que el usuario elija el color básico y las matemáticas fáciles de seguir. Jugar al golf fue un desafío interesante. El
Color
método utiliza1E6
como un medio para obtener una amplia gama de colores ya que los colores son válidos0
para2^24
. Establecerlo en10^6
áreas agradables de contraste.Explicación / Formateo automático:
También jugué con
D=999
yj=1 to 998
para obtener una imagen mucho más grande y más precisa. Los resultados son irrelevantes para el desafío porque son demasiado grandes pero están limpios.fuente
j<99
conj<D
.()
nombre secundario, debe cambiarlo y puede(j<99)
hacerlo(j<d)
, con el fin de hacer que las celdas cuadradas se usen soloCells.RowHeight=48
en lugar deCells.RowHeight=9
,Cells.ColumnWidth=1
esto hace que sea más difícil jugar con su salida, pero ha sido aceptado como válido por la comunidad -RowHeight
truco de la publicación de consejos de VBA y tenía la intención de integrarlo después de que obtuve todas mis fotos bonitas. Eso fue un buen trozo de bytes, gracias.2^20
con1E6
Perl + GD, 264
Golfed de este código
fuente
Flotador, 620 píxeles
Un lenguaje que inventé cuando me inspiré en mi propio desafío, así como en el lenguaje esotérico Piet.
fuente