/* 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>
Odpowiedzi:
Kalkulator graficzny Sharp EL-9300, 296 bajtów
To był mój kalkulator graficzny szkoły średniej, który działał już 20 lat temu! Pamiętam, jak kiedyś pisałem do niego generator mandelbrota. I oczywiście, wciąż tam jest w pamięci NV:
Renderowanie zajęło około 90 minut.
To jest całkowicie nie golfa. Jestem pewien, że mógłbym zaoszczędzić trochę miejsca, ale chciałem tylko podzielić się tą historyczną ciekawością!
Uwielbiam, że jedynymi dostępnymi stwierdzeniami kontrolnymi są
goto
s.Oto zdjęcie Nie mam żadnych innych środków, aby uzyskać wyjście graficzne:
źródło
zx²+zy²>4
nie mogło byćAbs(x)>2
?Spotkałem to innego dnia. Nie biorę za to uznania, ale cholera, czy to niesamowite:
Python 2:
http://preshing.com/20110926/high-resolution-mandelbrot-in-obfuscated-python/
źródło
LaTeX, 673 bajty
Obraz PDF składa się z kolorowych kwadratowych jednostek o rozmiarze 1 pz × 1 pz.
Nie golfił
źródło
Zestaw DOS x86,
208177173 bajtówPełny plik binarny w formacie HEX, który utworzyłem ręcznie, to:
Przykładowy obraz to:
Pełne źródło w czytelnym ASM jest dość długie (wykorzystałem to, aby dowiedzieć się, jak kodowałem tego frajera):
Jest przeznaczony do kompilacji z TASM, działa w MCGA i czeka na naciśnięcie klawisza przed zakończeniem programu. Kolory to tylko domyślna paleta MCGA.
EDYCJA: Zoptymalizowana, teraz rysuje do tyłu (choć ten sam obraz) i zapisuje 31 bajtów!
EDYCJA 2: Aby zapewnić OP, odtworzyłem plik binarny ręcznie. W ten sposób ogoliłem jeszcze 4 bajty. Udokumentowałem każdy krok procesu, pokazując całą moją pracę, aby każdy mógł śledzić, jeśli naprawdę chce, tutaj (ostrzeżenie, jest nudne i bardzo długie): http://lightning.memso.com/media/perm/ mandelbrot2.txt
Użyłem kilku wyrażeń regularnych w EditPadPro, aby znaleźć wszystkie
; Final: ...
wpisy w pliku i zrzucić je jako plik binarny hex do pliku .com. Wynikowy plik binarny znajduje się na początku tego postu.źródło
#define
instrukcji w C. Ręczne zastąpienie wszystkiego jest czasochłonne.Java,
505405324 bajtówTylko standardowe obliczenia
z golfitudeteraz z dodatkowym golfitude.Gra w golfa:
Z podziałami linii:
źródło
f.setSize(n,668);
- zależy w dużej mierze od użytego motywu, ale zaakceptuję go.double
gdziefloat
można by użyć, gdybyś próbowałJFrame
=>Frame
goli 2 znaki. Chociaż nie można już zamknąć okna. ;)final
modyfikatora. I nie można pominąć importu, aby być kompletnym zgłoszeniem.JavaScript (ECMAScript 6) -
315308 znakówn
aby zmienić rozmiar obrazu (i liczbę iteracji).f(87);f(0);f(0);
połączeniach (pod koniec), aby zmienić wartości kolorów RGB. (f(8);f(8);f(8);
jest w skali szarości.)Z
f(8);f(23);f(87);
:źródło
d=document
zaoszczędzi ci jeszcze kilka. (Poza tym, czy istnieje powód, by stworzyć płótno? Czy codegolf zakłada, że dostępny jest pewien poziom HTML?)document.createElement`canvas`
i zapisać 2 bajty. Taki sam jakgetContext`2d`
.J, 73 bajty
Edytuj , niektóre wyjaśnienia:
źródło
(0,?$~99 3)
100 trypletów rgb, po jednym dla każdego poziomu. Z powodu losowości możesz otrzymać mniej niż 100 trojaczków, więc niektóre poziomy będą miały płynniejsze przejście (ale nadal będą miały różne kolory).Mathematica,
2141912151930Od wersji 10.0 jest wbudowany: (19 bajtów)
Aby spełnić wymagania zakresu współrzędnych, wymagane jest 11 dodatkowych bajtów. (30 bajtów)
Ręcznie toczona walizka:
źródło
{b, -2, 2, .01}, {a, -2, 2, .01}
jest krótszy i bliższy zasadomThe fractal coordinates range from approximately -2-2i to 2+2i
.Python z Pylab + Numpy, 151 bajtów
Nie mogłem znieść widoku wpisu w Pythonie nie będącego DQ'em, ale myślę, że naprawdę prześcignąłem się w tym i zmniejszyłem liczbę do 153 znaków!
Co więcej, od drugiej do ostatniej linii pojawiają się 4 wyraźne ostrzeżenia w czasie wykonywania, nowy rekord osobisty!
źródło
import
i*
nie jest wymagane żadne miejsce , a określenief
w ogóle nie powinno być krótsze, chyba że coś źle zrozumiałem, co jest możliwe. Powinieneś także to zmienić tak, aby 0 iteracji i 1 iteracje były rozróżnione (obecnie oba są szare).wc
, ale może spróbujstat -c %s
zamiast tego. Czy czarne górne i dolne krawędzie są częścią obrazu?from numpy import*
zamiastimport numpy as n
imgrid
zamiastn.mgrid
.C + Allegro 4.2.2 - 248 bajtów
Wynik:
źródło
... allegro.h>
ix=-1, ...
? Przypuszczam, że Notepad ++ liczy to jako\r\n
=0D 0A
.0.01
można wpisać jako.01
.Windows PowerShell (v4), 299 bajtów
Instrukcje
Komentarz
źródło
lt2
, abylt4
zrobić to „Mandelbrot set” zamiast obrazu już teraz, wiele punktów zbioru są pochłonięte przez zespoły kolorystycznych.a*a+b*b
nie jestsqrt(a*a+b*b)
-lt4
. Co jest dobre - dziękuję. Zaktualizowałem swoją odpowiedź poprawionym kodem i obrazem. (Będę musiał przemyśleć moje rozumienie tego, co robi, ponieważ czegoś mi brakuje).Python + PIL , 166 bajtów
Dane wyjściowe (zostaną otwarte w domyślnej przeglądarce * .bmp):
źródło
y
pętli.r=range(d*d)
, użyjx/d
ix%d
dla xiy.Image.show()
domyślnie zapisuje plik tymczasowy).BBC Basic (228 bajtów)
Co z językami, o których nikt nigdy nie słyszał w golfie kodowym? Najprawdopodobniej można go zoptymalizować, ale nie jestem całkiem gdzie - możliwe ulepszenia. Na podstawie http://rosettacode.org/wiki/Mandelbrot_set#BBC_BASIC , ale starałem się kodować golfa w jak największym stopniu.
>
Symbol na obrazie jest szybka, a to automatycznie wygenerowany po uruchomieniu programu.źródło
NEXT Y,X
?APL, 194 znaków / bajtów *
To jest dla Dyalog APL z
⎕IO ⎕ML←1 3
Większość miejsca zajmują wywołania API, aby wyświetlić bitmapę w oknie (linie 2, 3, 4).
Jeśli byłby do tego skrót, kod miałby do 60 znaków (linia 1)
PLZ POMOC ZNAJDŹ SKRÓT KTHX
Wersja bez golfa (tylko linia 1)
Zrzut ekranu:
(Darmowa wersja działa w systemie OS X pod Wine. Tak, jestem taki tani.)
*: Dyalog ma swój własny jednobajtowy zestaw znaków, z symbolami APL odwzorowanymi na górne 128 bajtów, więc cały kod można zapisać w 194 bajtach. Każde stwierdzenie w tym przypisie jest prawdopodobnie prawdziwe. Zachowaj spokój i kontynuuj grę w golfa.
źródło
Mathematica 10.0, 19 znaków
MandelbrotSetPlot
jest nową funkcją w Mathematica 10.0.źródło
R,
199211 znakówStare rozwiązanie o długości 199 znaków:
Z wcięciem:
Edycja: Rozwiązanie składające się z 211 znaków, które inaczej koloruje wnętrze zestawu i zewnętrzną stronę pierwszej warstwy:
Z wcięciem:
źródło
rainbow()
:)Java - przetwarzanie (271 bajtów)
Rozszerzony:
źródło
TI-80 BASIC,
125106 bajtówNa podstawie odpowiedzi Digital Trauma.
źródło
GLSL - 225 bajtów:
Definiowanie zmiennych w kodzie (242 bajty):
Zobacz to w ShaderToy
Wymaga to załadowania odpowiedniej tekstury palety jako
iChannel0
. (Kolorystyka tutaj pochodzi z tekstury „losowego piksela” w ShaderToy).źródło
Oktawa (
212136 bajtów)(Teraz zawiera kilka pomysłów dzięki @ChrisTaylor.)
Z białymi znakami:
Wynik:
Aby przekonwertować na Matlab, zmień „
m+=abs(z)<2
” na „m=m+(abs(z)<2)
”. [+3 bajty]Aby ustawić proporcje 1: 1, dodaj „
;axis image
”. [+11 bajtów]Moja pierwsza odpowiedź (212 bajtów):
źródło
;axis image
”. Czy to jest wymagane, aby się zakwalifikować?Applesoft BASIC,
302286280 bajtówWybiera losowe punkty do losowania, więc będzie działać wiecznie i może nigdy nie wypełnić pełnej płaszczyzny.
Okazuje się, że Applesoft BASIC naprawdę wybacza brak miejsca. W całym programie wymagana jest tylko jedna spacja.
Wyjście po 14 godzinach:
GIF:
Przed golfem:
Uwaga:
POKE 49234,0
(w Applesoft BASIC) przełącza maszynę w tryb pełnej grafiki.Wersja zoptymalizowana pod kątem wyświetlaczy czarno-białych:
Wyjście po 12 godzinach:
Wersja, która będzie działać w GW-BASIC (DOS):
źródło
gnuplot 110 (105 bez nowych linii)
Obowiązkowy wpis gnuplot. Robiono to niezliczoną ilość razy, ale ten jest od zera (nie jest to trudne). Podoba mi się, jak
gnuplot
golf sam w sobie wydaje polecenia :)bez golfa:
Jestem jednak głęboko rozczarowany wprowadzeniem liczb zespolonych.
x*{1,0}+y*{0,1}
musi być najsmutniejszym istniejącym sposobem konstruowania liczby zespolonej.Ups, obraz:
Ustaw izosamki wyżej, aby uzyskać lepszą rozdzielczość. Moglibyśmy również powiedzieć
unset tics
iunset colorbox
dla czystego obrazu, ale myślę, że ta wersja jest w porządku.źródło
*{1,0}
jest jednością i jest bardziej jak sposób na powiedzenie kręgli kodu*1
i prawdopodobnie może zostać porzucony. (niesprawdzony)Matlab (89 bajtów)
Wynik -
Nie spełnia wymogu, że komórki wewnętrzne muszą być czarne lub białe, ale może to być spełnione przez (1) użycie
imshow(K)
zamiastimagesc(K)
(wymaga 1 bajtu mniej, ale wymaga zestawu narzędzi do przetwarzania obrazu) lub (2) dodaniecolormap hot
(wymaga 12 więcej bajty).Wersja bez golfa -
źródło
C-C
miejsce mojego0*e(401)
. Poza tym nie używaszN
. I możemy trochę skrócić, używając mojegom+=abs(z)<2
pomysłu zamiast twojegoK(~K&abs(Z)>2)=j
.colormap jet
icolormap hot
oba są niepoprawne - mają tylko 64 różne kolory.colormap(hot(101))
nie wydaje mi się wizualnie rozpoznawalny.colormap([0,0,0;jet(100)])
jest możliwe do zaakceptowania, ale niepewne.K=K+abs(Z)<2
Znaczy OktawaK=((K+abs(Z))<2)
. (Więc pomyliłem się co do jednego bajtu do wyeliminowania+=
.)JavaScript + HTML5 (356B)
(Uwaga: w celu zwiększenia czytelności dodano tutaj linie kończące się na „//”)
Wersja performant (375B):
Wersja wolna (356B): usuń „var” i parametry w funkcji wewnętrznej, aby użyć zakresu globalnego.
Wypróbuj: http://jsfiddle.net/neuroburn/Bc8Rh/
źródło
var w,
na początku i zmieńfunction(x,i,j,k,l,c,o)
nafunction()
.JavaScript, 285B
W oparciu o mój kod i kilka ulepszeń w kodzie MT0 , mam to do 285B w kolorze:
w akcji: http://jsfiddle.net/acLhe/7/
był: Coffeescript, 342B
Coffeescript ma być czytelny: - / zobacz go w akcji: http://jsfiddle.net/acLhe/6/
źródło
QBasic, QuickBasic, QB64 -
156153Standardowa paleta DOS:
źródło
Tcl / Tk, 316
322324336348349351352353354355Teraz krótsza wersja z 3-literowymi skrótami #RGB oznacza stylowe tryplety kolorów (zamiast trypletów #RRGGBB), co daje różne kolory.
I jeszcze trochę golfa.
Tcl / Tk, 325
331333345357358360361362364365Myślę, że wygrałbym, gdyby kryterium było piękno!
Prezentacja:
źródło
rename set s
na górze, a następnie zastąpienie całyset
Bys
Excel VBA,
251246224223221 bajtówZaoszczędzono 5 bajtów dzięki pułapowi catcat Zaoszczędzono 23 bajty dzięki Taylor Scott
Wynik:
Stworzyłem wersję, która zrobiła to dawno temu, ale miała wiele dodatków, takich jak pozwalanie użytkownikowi wybrać podstawowy kolor i łatwą do naśladowania matematykę. Gra w golfa w dół była interesującym wyzwaniem.
Color
Metoda wykorzystuje1E6
jako środek do uzyskania szerokiej gamy kolorów, ponieważ kolory są ważne0
do2^24
. Ustawienie10^6
daje dobre kontrastowe obszary.Objaśnienie / automatyczne formatowanie:
Grałem też z
D=999
i,j=1 to 998
aby uzyskać znacznie większy i bardziej precyzyjny obraz. Wyniki nie mają znaczenia dla wyzwania, ponieważ są o wiele za duże, ale są schludne.źródło
j<99
zj<D
.()
z nazwy podrzędnej, powinieneś zmienić(j<99)
na(j<d)
i możesz, w celu umożliwienia używania kwadratowych komórek tylkoCells.RowHeight=48
zamiastCells.RowHeight=9
,Cells.ColumnWidth=1
- utrudnia to bałagan z twoimi wynikami, ale został zaakceptowany jako ważny przez społeczność -RowHeight
sztuczkę z postu z poradami VBA i chciałem ją zintegrować po otrzymaniu wszystkich moich pięknych zdjęć. To był niezły kawałek, dzięki.2^20
z1E6
Perl + GD, 264
Grał w golfa z tego kodu
źródło
Floater, 620 pikseli
Język, który wymyśliłem, gdy zainspirowało mnie moje własne wyzwanie, a także ezoteryczny język Piet.
źródło