हर भाषा में मैंडलब्रॉट इमेज


91

मैंने हमेशा मंडेलब्रोट की छवि का उपयोग हैलो वर्ल्ड के 'चित्रमय' संस्करण के रूप में किया था, किसी भी चित्रमय अनुप्रयोग में, जिस पर मुझे हाथ मिला। अब आपके दोस्तों की बारी है।

  • भाषा चित्रमय आउटपुट या ड्राइंग चार्ट (सहेजे गए फ़ाइलों को सहेजने) में सक्षम होना चाहिए
  • एक वर्ग छवि या ग्राफ़ को रेंडर करें। आकार में कम से कम 128 और अधिकतम 640 *
  • भग्न निर्देशांक लगभग -2-2i से 2 + 2i तक होता है
  • मंडेलब्रोट सेट के बाहर के पिक्सल को पुनरावृत्तियों की संख्या के अनुसार रंगीन किया जाना चाहिए इससे पहले कि परिमाण 2 से अधिक हो (छोड़कर * काला और सफेद)
  • प्रत्येक पुनरावृत्ति गणना में एक अद्वितीय रंग होना चाहिए *, और पड़ोसी रंगों को अधिमानतः आंख द्वारा आसानी से पहचाना जाना चाहिए
  • अन्य पिक्सल (संभवतः मैंडलब्रॉट सेट के अंदर) को काले या सफेद रंग का होना चाहिए
  • कम से कम 99 पुनरावृत्तियों
  • ASCII कला की अनुमति नहीं है

* जब तक प्लेटफॉर्म द्वारा सीमित नहीं किया जाता है, उदाहरण के लिए ग्राफिकल कैलकुलेटर

अनुमत:
की अनुमति
अस्वीकृत:
अनुमति न दिया
(सिकुड़ी हुई छवियां)

जीतने की स्थिति:

प्रत्येक भाषा के लिए सबसे छोटा संस्करण (बाइट्स में आकार) इस पोस्ट में एक उल्लेख मिलेगा, आकार के अनुसार।
बटन के साथ कोई उत्तर कभी भी 'स्वीकार' नहीं किया जाएगा।

लीडरबोर्ड:


8
"आसानी से आंख से प्रतिष्ठित" उद्देश्य बनाने के लिए कठिन है। ... इसके अलावा, दो के अपने व्यक्तिगत सहयोग के अलावा, मैंडलब्रॉट सेट का हैलो वर्ल्ड के साथ कोई लेना-देना नहीं है, इसलिए शीर्षक से यह सबसे अच्छा है कि जब तक आप जानबूझकर खोज इंजनों को ट्रोल नहीं कर रहे हैं।
जोनाथन वान मैट्रे

1
संबंधित: ASCII मैंडलब्रॉट (हालांकि वहां पोस्ट किए गए कुछ उत्तर ASCII नहीं हैं और संभवतः इस प्रश्न के उत्तर के रूप में बेहतर फिट हो सकते हैं)।
पीटर टेलर

3
मैंने अब कुछ लोगों का उल्लेख किया है कि वे मंडेलब्रोट को "हैलो वर्ल्ड" के रूप में प्रस्तुत करते हैं। मैंने भी ऐसा किया है, जैसे 30 वर्षों के लिए। मैंडलब्रॉट एकदम सही "हैलो वर्ल्ड" है क्योंकि यह दोनों को दिखाता है कि आपके पास डिस्प्ले तक पिक्सेल की पहुंच है और नए प्लेटफॉर्म पर कंप्यूट बाध्य प्रदर्शन के लिए एक अच्छा अनुभव देता है।
रोजर डाह्ल

6
एक सवाल पूछने के लिए शानदार विचार, जिसके लिए गणितीय और सौंदर्य संबंधी संवेदनशीलता का संयोजन आवश्यक है, फिर सभी डिजाइन निर्णयों को पहले से लागू करें।
jwg

3
कोई भी दिमाग़ी जीत में एक बनाने का प्रबंधन करता है, मैं कहता हूँ: D
MadTux

जवाबों:


94

शार्प ईएल -9300 ग्राफिक्स कैलकुलेटर, 296 बाइट्स

यह मेरा माध्यमिक स्कूल रेखांकन कैलकुलेटर था , 20 साल पहले हो रहा था! मुझे याद है कि इसके लिए मैंडलब्रोट जेनरेटर लिख रहा था। और यकीन है कि पर्याप्त है, अभी भी वहाँ NV स्मृति में बैठे हैं:

ClrG
DispG
Range -2.35,2.35,.5,-1.55,1.55,0.5
y=-1.55
Label ly
x=-2.35
Label lx
n=1
zx=0
zy=0
Label ln
tzx=zx²-zy²+x
zy=(2*zx*zy)+y
zx=tzx
If zx²+zy²>4Goto esc
n=n+1
If n<20Goto ln
Label esc
If fpart (n/2)=0Goto npl
Plot x,y
Label npl
x=x+.05
If x<=2.35Goto lx
y=y+.05
If y<=1.55Goto ly
Wait

रेंडर करने में लगभग 90 मिनट का समय लगा।

यह पूरी तरह से अपुष्ट है। मुझे यकीन है कि मैं थोड़ी जगह बचा सकता था, लेकिन मैं सिर्फ इस ऐतिहासिक जिज्ञासा को साझा करना चाहता था!

मुझे लगता है कि केवल नियंत्रण विवरण उपलब्ध हैं goto

यहाँ एक तस्वीर है। मेरे पास ग्राफिकल आउटपुट प्राप्त करने का कोई अन्य साधन नहीं है: यहाँ छवि विवरण दर्ज करें


1
मुझे भी, लेकिन मेरी एनवी मेमोरी शेल्फ-टाइम के वर्षों के बाद खाली हो गई।
मार्क जेरोनिमस

2
zx²+zy²>4क्या ऐसा नहीं हो सकता Abs(x)>2?
मार्क जेरोनिमस

1
शायद आपको एक नई बैटरी मिलनी चाहिए ...
NothingsImpossible

25
दिलचस्प। तो आप काफी समय से एक बेवकूफ हैं
devnull

4
नीस "स्क्रीनशॉट"
मेवप्लप

83

मैं दूसरे दिन इस पार आया। मैं इसका श्रेय नहीं लेता, लेकिन लानत है, क्या यह भयानक है:

अजगर 2:

_                                      =   (
                                        255,
                                      lambda
                               V       ,B,c
                             :c   and Y(V*V+B,B,  c
                               -1)if(abs(V)<6)else
               (              2+c-4*abs(V)**-0.4)/i
                 )  ;v,      x=1500,1000;C=range(v*x
                  );import  struct;P=struct.pack;M,\
            j  ='<QIIHHHH',open('M.bmp','wb').write
for X in j('BM'+P(M,v*x*3+26,26,12,v,x,1,24))or C:
            i  ,Y=_;j(P('BBB',*(lambda T:(T*80+T**9
                  *i-950*T  **99,T*70-880*T**18+701*
                 T  **9     ,T*i**(1-T**45*2)))(sum(
               [              Y(0,(A%3/3.+X%v+(X/v+
                               A/3/3.-x/2)/1j)*2.5
                             /x   -2.7,i)**2 for  \
                               A       in C
                                      [:9]])
                                        /9)
                                       )   )

यहाँ छवि विवरण दर्ज करें http://preshing.com/20110926/high-resolution-mandelbrot-in-obfuscated-python/


12
खंडित होने लगता है: क्षेत्र आसानी से अलग नहीं होते हैं, या बिल्कुल भी नहीं।
प्राइमो

5
इसके अलावा, यह एक फाइल को लिखता है।
रेयान

40
अस्वीकृत या नहीं, यह बहुत बढ़िया है: D
नवीन

18
सबसे सुंदर इनपुट के लिए @DigitalTrauma, heck, +1!
ब्रायन एस

19
क्या यह एक क्वीन के रूप में गिना जाता है? ;-)
ब्लेज़मॉन्गर

47

लाटेक्स, 673 बाइट्स

\countdef\!1\!129\documentclass{article}\usepackage[margin=0pt,papersize=\!bp]{geometry}\usepackage{xcolor,pgf}\topskip0pt\offinterlineskip\def~{99}\let\rangeHsb~\countdef\c2\countdef\d3\countdef\e4\begin{document}\let\a\advance\let\p\pgfmathsetmacro\makeatletter\def\x#1#2#3{#10
\@whilenum#1<#2\do{#3\a#11}}\d0\x\c{\numexpr~+1}{\expandafter\edef\csname\the\c\endcsname{\hbox{\noexpand\color[Hsb]{\the\d,1,1}\/}}\a\d23
\ifnum\d>~\a\d-~\fi}\def\/{\rule{1bp}{1bp}}\x\c\!{\hbox{\x\d\!{\p\k{4*\d/(\!-1)-2}\p\K{2-4*\c/(\!-1)}\def\z{0}\def\Z{0}\x\e~{\p\:{\z*\z-\Z*\Z+\k}\p\Z{2*\z*\Z+\K}\let\z\:\p\:{\z*\z+\Z*\Z}\ifdim\:pt>4pt\csname\the\e\endcsname\e~\fi}\ifnum\e=~\/\fi}}}\stop

परिणाम 129x129 (129 × 129)

पीडीएफ छवि में 1bp × 1bp आकार के साथ रंगीन वर्ग इकाइयाँ होती हैं।

Ungolfed

% count register \size contains the width and height of the square
\countdef\size=1
\size=31
\documentclass{article}
\usepackage[margin=0pt,papersize=\size bp]{geometry}
\usepackage{xcolor,pgf}
\topskip0pt
\offinterlineskip
\def\iterations{99}
\let\rangeHsb\iterations
\countdef\c2
\countdef\d3
\countdef\e4
\begin{document}
\let\p\pgfmathsetmacro
\makeatletter
% \Loop: for (#1 = 0; #1 < #2; #1++) {#3}
\def\Loop#1#2#3{%
  #1=0
  \@whilenum#1<#2\do{#3\advance#11}%
}
\d0%
\Loop\c{\numexpr\iterations+1\relax}{%
  \expandafter\edef\csname\the\c\endcsname{%
    \hbox{\noexpand\color[Hsb]{\the\d,1,1}\noexpand\pixel}%
  }%
  \advance\d23 \ifnum\d>\iterations\advance\d-\iterations\fi
}
\def\pixel{\rule{1bp}{1bp}}
% \c: row
% \d: column
% \e: iteration
\Loop\c\size{%
  \typeout{c: \the\c}%
  \hbox{%
    \Loop\d\size{%
      \pgfmathsetmacro\k@re{4*\d/(\size-1)-2}%
      \pgfmathsetmacro\K@im{2-4*\c/(\size-1)}%
      \def\z@re{0}%
      \def\Z@im{0}%
      \Loop\e\iterations{%
         % calculate z(n+1) = z^2(n) + k
         \pgfmathsetmacro\temp{\z@re*\z@re-\Z@im*\Z@im+\k@re}%
         \pgfmathsetmacro\Z@im{2*\z@re*\Z@im+\K@im}%
         \let\z@re\temp
         % calculate abs(z)^2
         \pgfmathsetmacro\temp{\z@re*\z@re+\Z@im*\Z@im}%
         \ifdim\temp pt>4pt\csname\the\e\endcsname\e\iterations\fi
      }%   
      \ifnum\e=\iterations\pixel\fi
    }%
  }%
}
\stop

36

x86 डॉस असेंबली, 208 177 173 बाइट्स

हेक्स में पूर्ण बाइनरी, जो मैंने हाथ से बनाया है, वह है:

DBE3BE00A0B81300CD1056BA640007BF87F9FDBDC7008BCDE81A008AC3AA4979F7B9C70083EF784D79EE33C0CD16B80300CD10CD208BC12BC289441CDF441CDF06A701DEF9D95C088BC52BC289441CDF441CDF06A701DEF9D95C0CD9EED914D95404D95410D95C14B301D904D84C04DE0EA901D8440CD95404D94410D86414D84408D914D80CD95C10D84C04D95414D84410DF06AB01DED99BDFE09B9E7207433ADA72C632DBC3320002000400

नमूना छवि है:

ब्लैक क्रॉप्ड के साथ मैंडलब्रोट स्क्रीन शॉट

पठनीय एएसएम में पूर्ण स्रोत काफी लंबा है (मैंने इसका उपयोग यह पता लगाने के लिए किया कि मैं इस चूसने वाले को कैसे कोडित कर रहा हूं):

.286
CODE SEGMENT
ASSUME CS:code, DS:code
ORG 0100h

; *****************************************************************************
start:
  ; Mandlebrot coordinates
  zr   = DWORD PTR [SI+0]
  zi   = DWORD PTR [SI+4]
  cr   = DWORD PTR [SI+8]
  ci   = DWORD PTR [SI+12]
  zrsq = DWORD PTR [SI+16]
  zisq = DWORD PTR [SI+20]

  ; Temp int
  Temp = WORD PTR  [SI+28]

  ; ===========================================================================
  ; Initialize

  ; Initialize the FPU
  FNINIT

  ; SI points to our memory
  mov si, 0A000h ; So we can push it

  ; Shave off some bytes by reusing 100
  mov dx, 100

  ; Switch to MCGA
  mov ax, 013h
  int 010h

  ; ES:DI is the end of our drawing area
  push si
  pop es
  mov di, 63879
  std ; We're using stosb backwards

  ; Initialize our X and Y
  mov bp, 199
  mov cx, bp


  ; ===========================================================================
  ; Main draw loop

MainLoop:
  ; Get our next mandelbrot value
  call GMV

  ; Store it
  mov al, bl
  stosb

  ; Decrement our X
  dec cx
  jns MainLoop

  ; Decrement our Y
  mov cx, 199
  sub di, 120
  dec bp
  jns MainLoop


  ; ===========================================================================
  ; Done

  ; Wait for a key press
  xor ax, ax
  int 016h

  ; Change back to text mode
  mov ax, 3
  int 010h

  ; Exit to DOS
  int 020h



; *****************************************************************************
; GMV: Get Mandelbrot Value
; Gets the value for the next Mandelbrot pixel
; Returns:
;   BL - The color to use
GMV:
  ; ===========================================================================
  ; Initialize

  ; cr = (x - 100) / 50;
  mov ax, cx
  sub ax, dx                  ; \
  mov Temp, ax                ;  > ST0 = Current X - 100
  FILD Temp                   ; /
  FILD Divisor                ; ST0 = 50, ST1 = Current X - 100
  FDIVP                       ; ST0 = (Current X - 100) / 50
  FSTP cr                     ; Store the result in cr

  ; ci = (y - 100) / 50;
  mov ax, bp
  sub ax, dx                  ; \
  mov Temp, ax                ;  > ST0 = Current Y - 100
  FILD Temp                   ; /
  FILD Divisor                ; ST0 = 50, ST1 = Current Y - 100
  FDIVP                       ; ST0 = (Current Y - 100) / 50
  FSTP ci                     ; Store the result in ci

  ; zr = zi = zrsq = zisq = 0;
  FLDZ
  FST zr
  FST zi
  FST zrsq
  FSTP zisq

  ; numiteration = 1;
  mov bl, 1

  ; ===========================================================================
  ; Our main loop

  ; do {
GMVLoop:

  ; zi = 2 * zr * zi + ci;
  FLD zr
  FMUL zi
  FIMUL TwoValue
  FADD ci
  FST zi ; Reusing this later

  ; zr = zrsq - zisq + cr;
  FLD zrsq
  FSUB zisq
  FADD cr
  FST zr ; Reusing this since it already is zr

  ; zrsq = zr * zr;
  ;FLD zr ; Reused from above
  FMUL zr
  FSTP zrsq

  ; zisq = zi * zi;
  ;FLD zi ; Reused from above
  FMUL zi
  FST zisq ; Reusing this for our comparison

  ; if ((zrsq + zisq) < 4)
  ;   return numiteration;
  FADD zrsq
  FILD FourValue
  FCOMPP
  FSTSW ax
  FWAIT
  sahf
  jb GMVDone

  ;} while (numiteration++ < 200);
  inc bx
  cmp bl, dl
  jb GMVLoop

  ;return 0;
  xor bl, bl

GMVDone:  
  ret
;GMV



; *****************************************************************************
; Data

; Divisor
Divisor DW 50
; Two Value
TwoValue DW 2
; 4 Value
FourValue DW 4

CODE ENDS
END start

यह TASM के संकलन के लिए डिज़ाइन किया गया है, जो MCGA में चलता है, और प्रोग्राम को समाप्त करने से पहले एक कुंजीपट की प्रतीक्षा करता है। रंग केवल डिफ़ॉल्ट MCGA पैलेट हैं।

संपादित करें: इसे अनुकूलित किया है, अब यह पीछे की ओर (समान छवि हालांकि) खींचता है, और 31 बाइट्स बचाए!

EDIT 2: ओपी को आत्मसात करने के लिए, मैंने बाइनरी को हाथ से बनाया है। ऐसा करके, मैंने एक और 4 बाइट्स भी काट दी। मैंने प्रक्रिया के हर एक चरण का दस्तावेजीकरण किया, अपने सभी काम दिखाते हुए, ताकि कोई भी अनुसरण कर सके अगर वे वास्तव में चाहते हैं, तो यहां (चेतावनी, यह उबाऊ और बहुत लंबा है): http://lightning.memso.com/media/perm/ mandelbrot2.txt

मैंने EditPadPro में एक युगल रेगेक्स का उपयोग किया है, ; Final: ...फ़ाइल में सभी प्रविष्टियों को खोजने और उन्हें .com फ़ाइल के लिए हेक्स बाइनरी के रूप में डंप करने के लिए। परिणामी बाइनरी वह है जो आप इस पोस्ट के शीर्ष पर देखते हैं।


1
मशीन-कोड की गिनती नहीं है। यदि वह मायने रखता है, तो बाइट-कोड या मशीन-कोड बनाने वाली कोई भी भाषा छोटी होनी चाहिए। मैं सब कुछ 1-वर्ण लंबे नामों में बदलने के बाद 820 की गिनती करता हूं।
मार्क जेरोनिमस

3
अगर यह आपके लिए आसान हो जाता है, तो मैं पूरी बात को बाइनरी में कोड कर सकता हूं, लेकिन यह किसी भी व्यक्ति से उच्च स्तर की भाषा का उपयोग करने के लिए कहने जैसा होगा, स्वचालित निर्माण, मैक्रोज़ आदि का उपयोग करने से बचने के लिए, यह सब वास्तव में विधानसभा है, बस एक गुच्छा है। मैक्रो। पूर्ण जावास्क्रिप्ट, पर्ल, आदि को चलाने के लिए परिणामी बाइनरी में लाइब्रेरी के बाइनरी शामिल हैं। ASM के साथ, अंतिम हेक्स मूल्य सब कुछ है, पुस्तकालयों, सभी कोड, शामिल हैं।
मार्क ऑर्मस्टन

5
नहीं, यदि आवश्यक हो तो मैं ASM को बाइनरी में परिवर्तित कर सकता हूं। यह ठीक उसी 177 बाइट्स के साथ निकलेगा, जो मेरे असेंबलर ने मदद की थी। परिणामी कोड को किसी भी बाइनरी संपादक के साथ एक नई फ़ाइल में सहेजा जा सकता है, सहेजा गया, 177 बाइट्स, और यह अपेक्षा के अनुरूप काम करेगा। जाहिरा तौर पर एसओ को ASM सबमिशन पर विभाजित किया गया है, इसलिए शायद आपको यह स्पष्ट करना चाहिए कि क्या आपको लगता है कि यह गिनती नहीं है: meta.codegolf.stackexchange.com/questions/260/…
Mark Ormston

6
ठीक है, इसलिए, इसे एक वैध प्रविष्टि साबित करने के लिए, मैंने इसे बाइनरी में अनुवाद करने में लगने वाला समय बिताया। मैंने उसी हिसाब से अपना जवाब अपडेट किया है।
मार्क Ormston

7
बात यह है कि, विधानसभा के साथ कोई संकलक नहीं है। आप बस मैक्रोज़ का उपयोग करें। यह कहते हुए कि इसकी गिनती नहीं है, यह कहने जैसा है कि आप #defineसी में किसी भी पूर्वनिर्धारित बयान का उपयोग नहीं कर सकते हैं । यह सब मैन्युअल रूप से प्रतिस्थापित करने के लिए उपभोग करने में अभी समय है।
मार्क ऑर्मस्टन

28

जावा, 505 405 324 बाइट्स

बस एक मानक गणना, अब गोल्फ के साथ अतिरिक्त गोल्फ के साथ।

यहाँ छवि विवरण दर्ज करें

golfed:

import java.awt.*;class M{public static void main(String[]v){new Frame(){public void paint(Graphics g){for(int t,s,n=640,i=n*n;--i>0;g.setColor(new Color(s*820)),g.drawLine(i/n,i%n+28,i/n,i%n),setSize(n,668)){float c=4f/n,a=c*i/n-2,b=i%n*c-2,r=a,e=b,p;for(s=t=99;t-->0&&r*r+e*e<4;s=t,p=r*r-e*e+a,e=r*e*2+b,r=p);}}}.show();}}

लाइन ब्रेक के साथ:

import java.awt.*;
class M{
    public static void main(String[]v){
        new Frame(){
            public void paint(Graphics g){
                for(int t,s,n=640,i=n*n;--i>0;g.setColor(new Color(s*820)),g.drawLine(i/n,i%n+28,i/n,i%n),setSize(n,668)){
                    float c=4f/n,a=c*i/n-2,b=i%n*c-2,r=a,e=b,p;
                    for(s=t=99;t-->0&&r*r+e*e<4;s=t,p=r*r-e*e+a,e=r*e*2+b,r=p);
                }
            }
        }.show();
    }
}

f.setSize(n,668);- उपयोग किए गए थीम पर बहुत अधिक निर्भर करता है, लेकिन मैं इसे स्वीकार करूंगा।
मार्क जेरोनिमस

आप जावा में आयात को छोड़ सकते हैं क्योंकि वे वैसे भी स्वतः उत्पन्न होते हैं।
मार्क जेरोनिमस

मैं यह भी देखता हूं कि यदि आप कोशिश की जाए तो इसका इस्तेमाल doubleकहां किया floatजा सकता है
मार्क जेरोनिमस

JFrame=> Frame2 वर्णों को काटता है। हालाँकि आप अब विंडो बंद नहीं कर सकते। ;)
एथानब

2
आपके वर्ग को सार्वजनिक होने की आवश्यकता नहीं है। इसके अलावा, finalसंशोधक से छुटकारा पाने के लिए जावा 8 का उपयोग करें । और आपको संपूर्ण सबमिशन करने के लिए आयातों को छोड़ना नहीं चाहिए।
विक्टर स्टैफुसा

21

जावास्क्रिप्ट (ECMAScript 6) - 315 308 वर्ण

document.body.appendChild(e=document.createElement("canvas"));v=e.getContext("2d");i=v.createImageData(e.width=e.height=n=600,n);j=0;k=i.data;f=r=>k[j++]=(n-c)*r%256;for(y=n;y--;)for(x=0;x++<n;){c=s=a=b=0;while(c++<n&&a*a+b*b<5){t=a*a-b*b;b=2*a*b+y*4/n-2;a=t+x*4/n-2}f(87);f(0);f(0);k[j++]=255}v.putImageData(i,0,0)

डिफ़ॉल्ट आउटपुट

(d=document).body.appendChild(e=d.createElement`canvas`);v=e.getContext`2d`;i=v.createImageData(e.width=e.height=n=600,n);j=0;k=i.data;f=r=>k[j++]=(n-c)*r%256;for(y=n;y--;)for(x=0;x++<n;){c=s=a=b=0;while(c++<n&&a*a+b*b<5){t=a*a-b*b;b=2*a*b+y*4/n-2;a=t+x*4/n-2}f(87);f(0);f(0);k[j++]=255}v.putImageData(i,0,0)

  • nछवि का आकार बदलने के लिए बदलें (और पुनरावृत्तियों की संख्या)।
  • f(87);f(0);f(0);RGB रंग मान को बदलने के लिए कॉल (अंत के पास) में दिए गए मानों को बदलें। ( f(8);f(8);f(8);greyscale है।)

के साथ f(8);f(23);f(87);:

यहाँ छवि विवरण दर्ज करें

(d=document).body.appendChild(e=d.createElement`canvas`);v=e.getContext`2d`;i=v.createImageData(e.width=e.height=n=600,n);j=0;k=i.data;f=r=>k[j++]=(n-c)*r%256;for(y=n;y--;)for(x=0;x++<n;){c=s=a=b=0;while(c++<n&&a*a+b*b<5){t=a*a-b*b;b=2*a*b+y*4/n-2;a=t+x*4/n-2}f(8);f(23);f(87);k[j++]=255}v.putImageData(i,0,0)


2
अच्छा लगा। d=documentआपको कुछ और बचाएगा। (इसके अलावा, क्या कैनवास बनाने का कोई कारण है? क्या कोडगुल्फ़ एचटीएमएल के एक निश्चित स्तर को उपलब्ध करता है?)
मैथ्यू विलकॉक्सन

1
आप document.createElement`canvas` 2 बाइट्स लिख और बचा सकते हैं । के रूप में ही है getContext`2d`
इस्माइल मिगुएल

मैंने एक HTML कैनवास नहीं माना क्योंकि यह एक शुद्ध जावास्क्रिप्ट समाधान है।
MT0


19

जे, 73 बाइट्स

load'viewmat'
(0,?$~99 3)viewmat+/2<|(j./~i:2j479)(+*:) ::(3:)"0^:(i.99)0

मैंडलब्रॉट सेट

संपादित करें , कुछ समझा:

x (+*:) y           NB. is x + (y^2)
x (+*:) ::(3:) y    NB. returns 3 when (+*:) fails (NaNs)
j./~i:2j479         NB. a 480x480 table of complex numbers in required range
v =: (j./~i:2j479)(+*:) ::(3:)"0 ]     NB. (rewrite the above as one verb)
v z0                NB. one iteration of the mandelbrot operation (z0 = 0)
v v z0              NB. one iteration on top of the other
(v^:n) z0           NB. the result of the mandelbrot operation, after n iterations
i.99                NB. 0 1 2 3 4 ... 98
(v^:(i.99))0        NB. returns 99 tables, one for each number of iterations
2<| y               NB. returns 1 if 2 < norm(y), 0 otherwise
2<| (v^:(i.99))0    NB. 99 tables of 1s and 0s
+/...               NB. add the tables together, element by element.
NB. we now have one 480x480 table, representing how many times each element exceeded norm-2.
colors viewmat M    NB. draw table 'M' using 'colors'; 'colors' are rgb triplets for each level of 'M'.
$~99 3              NB. 99 triplets of the numbers 99,3
?$~99 3             NB. 99 random triplets in the range 0 - 98 and 0 - 2
0,?$~99 3           NB. prepend the triplet (0,0,0): black

1
+1 लेकिन आपके लिए यह स्पष्ट करना संभव होगा कि कोड कैसे काम करता है? विशेष रूप से यह जानने के लिए उत्सुक हैं कि (कोड में कहां) रंगों को चुनता है?
प्लेनैपस

1
@MarkJeronimus, मैं इसे 70 बना सकता हूं लेकिन मैंने स्पष्टता के लिए कुछ चीजें रखीं। इस प्रकार, मैंने गिनती करते समय LF की अनदेखी करने की स्वतंत्रता ली।
बारहवीं

@plannapus, OK, ने कुछ टिप्पणियां जोड़ीं। रंग उठाता है (0,?$~99 3)जिसके साथ प्रत्येक स्तर के लिए 100 आरजीबी ट्रिपल पैदा होता है। यादृच्छिकता के कारण, आप 100 से कम ट्रिपल प्राप्त कर सकते हैं, इसलिए कुछ स्तरों में एक चिकनी संक्रमण होगा (लेकिन अभी भी अलग-अलग रंग हैं)।
13

17

गणितज्ञ, 214 191 215 19 30

संस्करण 10.0 के बाद से एक अंतर्निहित: (19 बाइट्स) है

MandelbrotSetPlot[]

मैंडलब्रॉट


समन्वय रेंज आवश्यकताओं के अनुरूप, 11 अतिरिक्त बाइट्स की आवश्यकता होती है। (30 बाइट्स)

MandelbrotSetPlot@{-2-2I,2+2I}

एम 2


हाथ से लुढ़का मामला:

m=Compile[{{c,_Complex}},Length[FixedPointList[#^2+c&,0,99,SameTest→(Abs@#>=2&)]]];
ArrayPlot[Table[m[a+I b],{b,-2,2,.01},{a,-2,2,.01}],DataRange→{{-2,2},{-2,2}},
ColorRules→{100→Black},ColorFunction→(Hue[Log[34,#]]&)]

हरा


{b, -2, 2, .01}, {a, -2, 2, .01}कम है और नियमों के करीब है
मार्क जेरोनिमस

@MarkJeronimus धन्यवाद मैंने पुनरावृत्त चित्र के लिए सुझाई गई सीमा का उपयोग किया।
डेविड मार्क

आपके पास यह लगभग सही था, फिर आपने अंदर को गैर-काला बना दिया। GIF में आखिरी फ्रेम अंदर काला है और एक अनुमत उत्तर है। संपादित करें: और मैं 195 बाइट्स गिनता हूं।
मार्क जेरोनिमस

मुझे काले होने की बात याद आ गई। गिनती में वृद्धि हुई क्योंकि कुछ एकल वर्ण एसई के कट-एंड-पेस्ट में दो वर्ण बन गए।
डेविड मार्क

आपका बिल्ट-इन समाधान बहुत ढीली व्याख्या का उपयोग करता है The fractal coordinates range from approximately -2-2i to 2+2i
जोनाथन फ्रैच

16

पायलैब + नेम्पी के साथ अजगर, 151 बाइट्स

मैं एक गैर-DQ'ed पायथन प्रविष्टि को देखने के लिए सहन नहीं कर सका, लेकिन मुझे लगता है कि मैं वास्तव में इस एक पर खुद को पार कर गया हूं, और मैंने इसे 153 वर्णों तक सीमित कर दिया है!

import numpy as n
from pylab import*
i=99
x,y=n.mgrid[-2:2:999j,-2:2:999j]
c=r=x*1j+y
x-=x
while i:x[(abs(r)>2)&(x==0)]=i;r=r*r+c;i-=1
show(imshow(x))

इसके अलावा, विशेष रूप से, दूसरी से अंतिम पंक्ति 4 अलग-अलग रनटाइम चेतावनी, एक नया व्यक्तिगत रिकॉर्ड उठाती है!

यहाँ छवि विवरण दर्ज करें


मैं गिनती 152. कोई स्थान के बीच की आवश्यकता है importऔर *, और परिभाषित नहीं fबिल्कुल, कम होनी चाहिए, जब तक कि मैं कुछ, जो संभव है गलत समझा गया है। आपको इसे इस तरह से बदलना चाहिए कि 0 पुनरावृत्तियों और 1 पुनरावृत्तियों को विचलित किया गया है (वे वर्तमान में दोनों ग्रे हैं)।
प्रिमो

अजीब। क्या wc में eof शामिल है? निश्चित और थोड़ा छोटा। बस एक पल।
मेवोप्लप

मैं 151 wc के साथ मिलता हूँ। पहला गोल्फ, इसलिए सुनिश्चित नहीं है कि इसे कैसे स्कोर किया जाए।
मेवोप्लप

मैं न्यूलाइन को पीछे छोड़ते हुए 150 की गिनती करता हूं। कुछ दुभाषिए / संकलक एक मांग करते हैं, लेकिन अजगर दुभाषिया बिना ठीक करता है। के बारे में निश्चित नहीं है wc, लेकिन शायद stat -c %sइसके बजाय प्रयास करें । क्या काली ऊपरी और निचली सीमाएँ छवि का हिस्सा हैं?
प्रिमो

1
आप के from numpy import*बजाय import numpy as nऔर के mgridबजाय का उपयोग करके 1 चरित्र को बचा सकते हैं n.mgrid
nyuszika7h

15

C + Allegro 4.2.2 - 248 बाइट्स

#include<allegro.h>
x=-1,y,K=400;float a,h,c,d,k;main(i){set_gfx_mode('SAFE',K,K,allegro_init(),0);while(x++<K)
for(y=0;y<K;y++){for(a=h=i=0;a*a+h*h<4&&++i<256;k=a,a=a*a-h*h+x*0.01-2,h=2*k*h+y*0.01-2);
putpixel(screen,x,y,i);}while(1);}END_OF_MAIN()

आउटपुट:

MSet 1


आपको यह उल्लेख करना चाहिए कि यह Allegro 4 है (जो Allegro 5 से काफी अलग है)। यह कौन सा सटीक संस्करण है?
विक्टर स्टाफ़ुसा

यह 246 या 249 लंबा है
मार्क जेरोनिमस

@ विक्टर एलेग्रो 4.2.2।
ओबेरॉन

1
@MarkJeronimus के बीच एक नई सीमा नहीं होनी चाहिए ... allegro.h>और x=-1, ...? मुझे लगता है नोटपैड ++ इसे \r\n= के रूप में गिनता है 0D 0A
ओबेरॉन

1
मुझे लगता है कि 0.01टाइप किया जा सकता है .01
यति

14

विंडोज पॉवरशेल (v4), 299 बाइट्स

मैंडलब्रोट भग्न चित्र

# Linewrapped here for show:

$M='System.Windows.Forms';nal n New-Object;Add-Type -A System.Drawing,$M;(
$a=n "$M.Form").backgroundimage=($b=n Drawing.Bitmap 300,300);0..299|%{
$r=$_;0..299|%{$i=99;$k=$C=n numerics.complex($_/75-2),($r/75-2);while(((
$k=$k*$k).Magnitude-lt4)-and$i--){$k+=$C}$b.SetPixel($_,$r,-5e6*++$i)}};$a.Show()


# The single line 299 char entry version:

$M='System.Windows.Forms';nal n New-Object;Add-Type -A System.Drawing,$M;($a=n "$M.Form").backgroundimage=($b=n Drawing.Bitmap 300,300);0..299|%{$r=$_;0..299|%{$i=99;$k=$C=n numerics.complex($_/75-2),($r/75-2);while((($k=$k*$k).Magnitude-lt4)-and$i--){$k+=$C}$b.SetPixel($_,$r,-5e6*++$i)}};$a.Show()

अनुदेश

  • एक सामान्य PowerShell कंसोल चलाएँ (ISE काम नहीं कर सकता है)
  • कोड कॉपी / पेस्ट करें, Enter दबाएँ
  • प्रतीक्षा करें - इसे चलाने में एक मिनट या अधिक समय लगता है
  • छोड़ने का एकमात्र तरीका कंसोल को बंद करना है

टिप्पणी

  • सेट के अंदर रंगों के साथ एक छोटा सा नियम-परीक्षण चल रहा है; नियम कहते हैं, "अन्य पिक्सेल (संभवतः मैंडलब्रॉट सेट के अंदर) को या तो काले या सफेद रंग का होना चाहिए" ; कोड पूरी तरह से काले RGB (0,0,0) पिक्सेल रंग रहा है ... यह सिर्फ एक पारदर्शी काला RGBA (0,0,0,0) होता है। तो जो दिखाता है वह इस मामले में वर्तमान विंडोज थीम का बैकग्राउंड कलर, थोड़ा ऑफ-व्हाइट RGB (240,240,240) है।

मैं बदल देंगे lt2करने के लिए lt4यह एक "मैंडलब्रॉट सेट" के बजाय छवि अब आप सेट से कई अंक रंग बैंड द्वारा निगल रहे हैं बनाने के लिए।
मार्क जेरोनिमस

स्पष्ट रूप से परिमाण a*a+b*bनहीं हैsqrt(a*a+b*b)
मार्क जेरोनिमस

मैं मुझे लगता है कि पहले परीक्षण किया सोचा, लेकिन मैं करने के लिए "जहां बाईं तरफ क्षैतिज रेखा गया है?" एक उत्तर की तलाश में चला गया, और एक बिट के बाद, मैं यह वास्तव में जहां कहा पाया, -lt4। जो अच्छा है - धन्यवाद। मैंने अपना उत्तर सही कोड और छवि के साथ अपडेट किया है। (मुझे अपनी समझ पर फिर से विचार करना होगा कि यह क्या कर रहा है, क्योंकि मैं कुछ याद कर रहा हूं)।
TessellatingHeckler

14

पायथन + पीआईएल , 166 बाइट्स

import Image
d=600;i=Image.new('RGB',(d,d))
for x in range(d*d):
 z=o=x/9e4-2-x%d/150.j-2j;c=99
 while(abs(z)<2)*c:z=z*z+o;c-=1
 i.putpixel((x/d,x%d),5**8*c)
i.show()

आउटपुट (डिफ़ॉल्ट * .bmp दर्शक में खुलेगा):


1
आप yलूप से छुटकारा पाने पर 3 को शेव कर सकते हैं । r=range(d*d), का उपयोग करें x/dऔर x%dएक्स और वाई के लिए।
Geobits

@ विचार वास्तव में 10 बचाया, धन्यवाद!
प्रिमो

1
जटिल प्रकारों को इनिशियलाइज़ किया जा सकता है जैसे: c = 1 + 2j, जो मुझे लगता है कि आपके साथ कुछ अक्षर बचाएंगे: z = o = x / 9e4-2 + (x% d / 150.-2) * 1j; c = 99
मेवप्लप

@meawoppl एक और 7: डी
Primo

तकनीकी रूप से अस्वीकृत: यह पायथन की स्वयं की कोई चित्रमय आउटपुट सुविधा नहीं है (और Image.show()अंतर्निहित रूप से एक अस्थायी फ़ाइल बचाता है)।
nnonneo

12

बीबीसी बेसिक (228 बाइट्स)

उन भाषाओं के बारे में जो कोड गोल्फ में कभी किसी ने नहीं सुनी हैं? सबसे अधिक संभावना को अनुकूलित किया जा सकता है, लेकिन मैं काफी नहीं हूं - जहां सुधार संभव है। Http://rosettacode.org/wiki/Mandelbrot_set#BBC_BASIC के आधार पर , लेकिन मैंने इसे जितना संभव हो सके गोल्फ को कोड करने की कोशिश की।

VDU23,22,300;300;8,8,8,8
ORIGIN0,300
GCOL1
FORX=0TO600STEP2
i=X/200-2
FORY=0TO300STEP2
j=Y/200
x=0
y=0
FORI=1TO128
IFx*x+y*y>4EXIT FOR
t=i+x*x-y*y
y=j+2*x*y
x=t
NEXT
COLOUR1,I*8,I*4,0
PLOTX,Y:PLOTX,-Y
NEXT
NEXT

उत्पन्न मेंडलब्रॉट सेट

>छवि पर प्रतीक शीघ्र है, और यह स्वचालित रूप से कार्यक्रम चलाने के बाद जेनरेट होता है।


दो बार साजिश करने की ज़रूरत नहीं है, बस एक अधिक अक्षम संस्करण के साथ जाएं। यह समर्थन नहीं करता है NEXT Y,X?
मार्क जेरोनिमस

10

एपीएल, 194 चार्ट / बाइट्स *

m←{1{⍺=99:0⋄2<|⍵:⍺⋄(⍺+1)∇c+⍵*2}c←⍵}¨⍉v∘.+0j1×v←¯2+4÷s÷⍳s←640
'F'⎕WC'Form'('Coord' 'Pixel')('Size'(s s))
'B'⎕WC'Bitmap'('CMap'(0,,⍨⍪0,15+10×⍳24))('Bits'(24⌊m))
'F.I'⎕WC'Image'(0 0)('Picture' 'B')

यह Dyalog APL के साथ है ⎕IO ⎕ML←1 3

ज्यादातर स्पेस एपीआई कॉल द्वारा विंडो में बिटमैप दिखाने के लिए लिया जाता है (लाइनें 2, 3, 4)
यदि ऐसा करने का कोई शॉर्टकट था, तो कोड 60 चार्ट (पंक्ति 1) से नीचे होगा।

PLZ मदद की तरह KTHX

Ungolfed संस्करण (केवल पंक्ति 1)

s←640            ⍝ size of the bitmap
v←(4×(⍳s)÷s)-2   ⍝ vector of s reals, uniform between ¯2 and 2
m←(0j1×v)∘.+v    ⍝ square matrix of complex numbers from ¯2j¯2 to 2j2
m←{              ⍝ transform each number in matrix m according to the following
  1{             ⍝   function that takes iteration counter as ⍺ and current value as ⍵
    ⍺=99: 0      ⍝     if we have done 99 iterations, return 0
    2<|⍵: ⍺      ⍝     if |⍵| > 2 return the number of iterations done
    (⍺+1)∇c+⍵*2  ⍝     otherwise, increment the iterations and recurse with the new value
  }c←⍵           ⍝   save the initial value as c
}¨m    

स्क्रीनशॉट:

(शराब के तहत OS X में फ्रीवेयर संस्करण चलता है। हां मैं ऐसा ही सस्ता हूं।)

स्क्रीनशॉट

* - Dyalog का अपना सिंगल बाइट चार्जसेट है, जिसमें APL सिंबल ऊपरी 128 बाइट मानों से मेल खाते हैं, इसलिए पूरे कोड को 194 बाइट्स में स्टोर किया जा सकता है। इस फुटनोट में प्रत्येक कथन संभवतः सत्य है। शांत रहें और गोल्फिंग करें।


10

गणितज्ञ 10.0, 19 वर्ण

MandelbrotSetPlot[]

MandelbrotSetPlot Mathematica 10.0 में एक नया कार्य है।

यहाँ छवि विवरण दर्ज करें


यह कितना सुविधाजनक है, कि यह फंक्शन में निर्मित मेरी सभी आवश्यकताओं को पूरा करने के लिए होता है (स्थान को छोड़कर, जिसे 13 और पात्रों के साथ सेट किया जा सकता है)। सिवाय इसके एक मानक खामी है।
मार्क जेरोनिमस

19
कोड गोल्फ आमतौर पर एकल-चरित्र वाले टोकन के साथ विशेषज्ञ भाषाओं द्वारा जीता जाता है, या मैथेमेटिका जैसी प्रणालियों द्वारा निर्मित विशेष कार्यों की एक बड़ी संख्या होती है। उनका उपयोग करना धोखा नहीं है, एकल-वर्ण कमांड का उपयोग करने से अधिक एपीएल में होगा।
माइकल स्टर्न

9

आर, 199 211 वर्ण

199 अक्षरों पर पुराना हल:

r=seq(-2,2,l=500);c=t(sapply(r,function(x)x+1i*r));d=z=array(0,dim(c));a=1:25e4;for(i in 1:99){z[a]=c[a]+z[a]^2;s=abs(z[a])<=2;d[a[!s]]=i;a=a[s]};image(d,b=0:99,c=c(1,sample(rainbow(98))),ax=F,asp=1)

इंडेंटेशन के साथ:

r=seq(-2,2,l=500)
c=t(sapply(r,function(x)x+1i*r)) #Produces the initial imaginary number matrix
d=z=array(0,dim(c)) #empty matrices of same size as c 
a=1:25e4            #(z will store the magnitude, d the number of iterations before it reaches 2)
for(i in 1:99){     #99 iterations
    z[a]=c[a]+z[a]^2
    s=abs(z[a])<=2
    d[a[!s]]=i
    a=a[s]
    }
image(d,b=0:99,c=c(1,sample(rainbow(98))),ax=F,asp=1) #Colors are randomly ordered (except for value 0)

यहाँ छवि विवरण दर्ज करें

संपादित करें: सेट के अंदर और पहली परत के बाहर अलग-अलग रंग भरने वाले 211 वर्णों पर समाधान:

r=seq(-2,2,l=500);c=t(sapply(r,function(x)x+1i*r));d=z=array(0,dim(c));a=1:25e4;for(i in 1:99){z[a]=c[a]+z[a]^2;s=abs(z[a])<=2;d[a[!s]]=i;a=a[s]};d[a[s]]=-1;image(d,b=-1:99,c=c(1:0,sample(rainbow(98))),ax=F,asp=1)

इंडेंटेशन के साथ:

r=seq(-2,2,l=500)
c=t(sapply(r,function(x)x+1i*r))
d=z=array(0,dim(c))
a=1:25e4
for(i in 1:99){
    z[a]=c[a]+z[a]^2
    s=abs(z[a])<=2
    d[a[!s]]=i
    a=a[s]
    }
d[a[s]]=-1 #Gives the inside of the set the value -1 to differenciate it from value 0.
image(d,b=-1:99,c=c(1,sample(rainbow(99))),ax=F,asp=1)

यहाँ छवि विवरण दर्ज करें


बाहर की तरफ तकनीकी रूप से काले रंग को अस्वीकार कर दिया गया है। क्या आपने याद किया या इसे लागू करना मुश्किल है?
मार्क जेरोनिमस

@MarkJeronimus दोनों वास्तव में :) मैं कोशिश करूँगा कि ऐसा कैसे किया जा सकता है, लेकिन मैं 100% विश्वास नहीं करता हूं कि मुझे साफ-सफाई करने का एक तरीका मिल जाएगा।
प्लेनेपस

@MarkJeronimus हो गया!
प्लेनैपस

5
छिपे हुए रंगों के विभाजन में दूसरा स्थान।
मेवप्लप

1
@meawoppl दोष rainbow():)
प्लाननैपस

9

जावा - प्रसंस्करण (271 बाइट्स)

void setup(){int h=100,e=5*h,i;float d,v,w,a,b,c;size(e,e);colorMode(HSB,h);loadPixels();d=4./e;v=2;for(int x=1;x<=e;x++){v-=d;w=2;for(int y=0;y<e;){w-=d;a=b=c=0;i=-1;while(a*a+b*b<4&&++i<h){c=a*a-b*b+v;b=2*a*b+w;a=c;}pixels[e*++y-x]=color(i*9%h,h,h-i);}}updatePixels();}

विस्तारित:

void setup(){
  int h=100, e=5*h, i; //init of size "e", max hue "h", iterator "i"
  float d,v,w,a,b,c; //init of stepwidth "d", y-coord "v", x-coord "w", Re(z) "a", Im(z) "b", temp_a "c"
  size(e,e);
  colorMode(HSB,h);
  loadPixels();
  d = 4./e;
  v = 2;
  for(int x = 1; x <= e; x++){
    v -= d;
    w = 2;
    for(int y = 0; y < e;){
      w -= d;
      a = b = c = 0;
      i = -1;
      while(a*a + b*b < 4 && ++i < h){
        c = a*a - b*b + v;
        b = 2*a*b + w;
        a = c;
      }
      pixels[e * ++y - x] = color(i*9 % h, h, h-i);
    }
  }
  updatePixels();
}


ओ, मैना, मैं ऐसा करना चाहता था। +1
SIGSTACKFAULT

8

TI-80 BASIC, 125 106 बाइट्स

ZDECIMAL
FOR(Y,-2,2,.1
FOR(X,-2,2,.1
0->S
0->T
1->N
LBL N
N+1->N
IF S²+T²≥4
GOTO B
S²-T²+X->I
2ST+Y->T
I->S
IF N<20
GOTO N
LBL B
IF FPART (N/2
PT-ON(X,Y
END
END

डिजिटल ट्रॉमा के जवाब के आधार पर। यहाँ छवि विवरण दर्ज करें


6

जीएलएसएल - 225 बाइट्स:

void main(){vec2 c=gl_FragCoord.xy/iResolution.y*4.-2.,z=c,v;for(int i=0;i<99;i++){z=vec2(z.x*z.x-z.y*z.y,2.*z.x*z.y)+c;if(length(z)>2.&&v.y<1.)v=vec2(float(i)/99.,1.);}gl_FragColor=(v.y<1.)?vec4(v,v):texture2D(iChannel0,v);}

कोड में चर को परिभाषित करना (242 बाइट्स):

uniform vec3 r;uniform sampler2D t;void main(){vec2 c=gl_FragCoord.xy/r.y*4.-2.,z=c,v;for(int i=0;i<99;i++){z=vec2(z.x*z.x-z.y*z.y,2.*z.x*z.y)+c;if(length(z)>2.&&v.y<1.)v=vec2(float(i)/99.,1.);}gl_FragColor=(v.y<1.)?vec4(v,v):texture2D(t,v);}

इसे ShaderToy में देखें

मैंडलब्रॉट गोल्फ

इसके लिए उपयुक्त पैलेट बनावट की आवश्यकता होती है iChannel0। (यहां रंगरोगन ShaderToy पर "यादृच्छिक पिक्सेल" बनावट से है)।


परिवर्तनीय घोषणाओं को भी गिना जाना चाहिए, जब तक कि वे कोड से स्वत: उत्पन्न न हो सकें। (रंग योजना ठीक है अगर यह केवल एक बाहरी सेटिंग के रूप में उपलब्ध है)
मार्क जेरोनिमस

@MarkJeronimus: ShaderToy वातावरण के लिए, ये चर निश्चित हैं। अन्यथा, मानक शेड के लिए, मैंने छोटे चर नाम चुने होंगे।
nnonneo

क्या यह उन सब में सबसे तेज है?
डेमी

6

ऑक्टेव ( 212) 136 बाइट्स)

(अब @ChrisTaylor के कारण कुछ विचार शामिल हैं।)

[y,x]=ndgrid(-2:.01:2);z=c=x+i*y;m=c-c;for n=0:99;m+=abs(z)<2;z=z.^2+c;end;imagesc(m);colormap([hsv(128)(1+mod(0:79:7890,128),:);0,0,0])

व्हॉट्सएप के साथ:

[y,x] = ndgrid(-2:.01:2);
z = c = x + i*y;
m = c-c;
for n=0:99
    m += abs(z)<2;
    z = z.^2 + c;
end
imagesc(m)
colormap([hsv(128)(1+mod(0:79:7900,128),:);
          0,0,0])

आउटपुट:

मैंडलब्रॉट एब्स (z)> 2 के चरण

मतलाब में बदलने के लिए, "बदलें"m+=abs(z)<2 " को " "m=m+(abs(z)<2) " । [+3 बाइट्स]

पहलू अनुपात 1: 1 बनाने के लिए, "जोड़ें";axis image " । [+11 बाइट्स]

मेरा पहला उत्तर (212 बाइट्स):

[x,y]=meshgrid(-2:.01:2);z=c=x+i*y;m=0*e(401);for n=0:99;m+=abs(z)<2;z=z.^2+c;endfor;t=[0*e(1,7);2.^[6:-1:0]];[s{1:7}]=ndgrid(num2cell(t,1){:});t=1+sum(cat(8,s{:}),8);imagesc(m);colormap([hsv(128)(t(:),:);0,0,0])

वहाँ शायद एक छोटा रास्ता है एक बंद
colormap

हां, अब बहुत बेहतर है।
1

+1 अच्छा और संक्षिप्त समाधान। लेकिन आपका पहलू अनुपात 1: 1 नहीं है (cf. नियम n ° 2: आउटपुट वर्ग होना चाहिए)।
प्लेनैपस

पहलू अनुपात को ठीक करने में 11 और बाइट्स लगेंगे: परिशिष्ट " ;axis image"। क्या यह अर्हता प्राप्त करने के लिए आवश्यक है?
एशेपलर

मुझे लगता है कि यह सिर्फ मुझे परेशान कर रहा था :), ओपी को इसके साथ कोई समस्या नहीं है क्योंकि उसने कुछ भी नहीं कहा।
प्लेनैपस

6

अप्लेसॉफ्ट बेसिक, 302 286 280 बाइट्स

यह आकर्षित करने के लिए यादृच्छिक बिंदुओं को चुनता है, इसलिए यह हमेशा के लिए चलेगा और शायद कभी पूरा विमान न भरे।

1HGR:POKE49234,0:DIMco(10):FORc=0TO10:READd:co(c)=d:NEXT:DATA1,2,3,5,6,1,2,3,5,6,0
2x=INT(RND(1)*280):y=INT(RND(1)*96):x1=x/280*3-2:y1=y/191*2-1:i=0:s=x1:t=y1
3s1=s*s-t*t+x1:t=2*s*t+y1:s=s1:i=i+1:IFs*s+t*t<4ANDi<20THENGOTO3
4c=co(i/2):IFc THENHCOLOR=c:HPLOTx,y:HPLOTx,191-y
5GOTO2

बाहर मुड़ता है Applesoft BASIC वास्तव में रिक्त स्थान की कमी के बारे में क्षमा कर रहा है। पूरे कार्यक्रम में केवल एक स्थान आवश्यक है।

14 घंटे के बाद आउटपुट:

        उत्पादन

GIF:

        gif

गोल्फ से पहले:

10 HGR : POKE 49234,0
20 DIM co(10) : FOR c = 0 TO 10 : READ d : co(c) = d : NEXT
30 DATA 1, 2, 3, 5, 6, 1, 2, 3, 5, 6, 0
100 x = INT(RND(1) * 280) : y = INT(RND(1) * 96)
110 x1 = x / 280 * 3 - 2 : y1 = y / 191 * 2 - 1
120 i = 0:s = x1:t = y1
130 s1 = s * s - t * t + x1
140 t = 2 * s * t + y1:s = s1: i = i + 1
150 IF s * s + t * t < 4 AND i < 20 THEN GOTO 130
160 c = co(i/2) : IF c THEN HCOLOR= c : HPLOT x,y : HPLOT x,191 - y
170 GOTO 100

ध्यान दें: POKE 49234,0 (Applesoft BASIC में) मशीन को पूर्ण ग्राफिक्स मोड में डालता है।

B & W डिस्प्ले के लिए अनुकूलित संस्करण:

110 HGR:POKE 49234,0:HCOLOR=3
120 FOR x = 0 TO 279:FOR y = 0 TO 95
130 x1 = x / 280 * 3 - 2:y1 = y / 191 * 2 - 1
140 i = 0:s = x1:t = y1:c = 0
150 s1 = s * s - t * t + x1
160 t = 2 * s * t + y1:s = s1:c = 1 - c:i = i + 1
170 IF s * s + t * t < 4 AND i < 117 THEN GOTO 150
180 IF c = 0 THEN HPLOT x,y:HPLOT x,191 - y
190 NEXT:NEXT

12 घंटे के बाद आउटपुट:

        B & W

एक संस्करण जो GW-BASIC (DOS) में काम करेगा:

5 CLS
6 SCREEN 1
20 DIM co(10) : FOR c = 0 TO 10 : READ d : co(c) = d : NEXT
30 DATA 1, 2, 3, 5, 6, 1, 2, 3, 5, 6, 0
100 x = INT(RND(1) * 280) : y = INT(RND(1) * 96)
110 x1 = x / 280 * 3 - 2 : y1 = y / 191 * 2 - 1
120 i = 0 : s = x1 : t = y1
130 s1 = s * s - t * t + x1
140 t = 2 * s * t + y1 : s = s1 : i = i + 1
150 IF s * s + t * t < 4 AND i < 20 THEN GOTO 130
160 c = co(i/2) : PSET (x,y),C : PSET (x,191 - y),C
170 GOTO 100

यदि आप एक साथ दो पिक्सेल प्लॉट नहीं करते हैं, लेकिन छोटा (और धीमा) होगा, लेकिन पूरी स्क्रीन पर एक यादृच्छिक पिक्सेल चुनें।
मार्क जेरोनिमस

1
@MarkJeronimus यह पहले से ही इतना धीमा है कि 5 दिनों पहले पोस्ट करने के बाद रंग संस्करण अभी तक समाप्त नहीं हुआ है। मुझे नहीं लगता कि मैं इसे किसी भी धीमे होने का जोखिम उठा सकता हूं: पी
एमडी एक्सएफ

5

gnuplot 110 (नई कहानियों के बिना 105)

ओब्लाइजेंट ग्नूप्लोट प्रविष्टि। यह अनगिनत बार किया गया है लेकिन यह एक खरोंच से है (यह मुश्किल नहीं है)। मुझे पसंद है कि कैसे gnuplotगोल्फ अपने आदेश आंतरिक रूप से :)

f(z,w,n)=abs(z)>2||!n?n:f(z*z+w,w,n-1)
se vi map
se si sq
se isos 256
sp [-2:2] [-2:2] f(0,x+y*{0,1},99) w pm

ungolfed:

f(z,w,n)=abs(z)>2||n==0?n:f(z*z+w,w,n-1)
set view map
set size square
set isosamples 256
splot [-2:2] [-2:2] f(0,x*{1,0}+y*{0,1},99) with pm3d

हालाँकि, मैं जटिल संख्याओं के प्रवेश पर निराश हूँ। x*{1,0}+y*{0,1}एक जटिल संख्या के निर्माण का सबसे दुखद मौजूदा तरीका होना चाहिए।

ओह, छवि: gnuplot मंडेलब्रोट

बेहतर रिज़ॉल्यूशन के लिए आइसोसैम्प्स को सेट करें। हम यह भी कह सकते हैं unset ticsऔर unset colorboxएक शुद्ध छवि के लिए, लेकिन मुझे लगता है कि यह संस्करण केवल ठीक है।


शर्त यह है कि पहले गूगल हिट "gnuplot mandel" से कॉपी / पास्ता है। शुरुआत के लिए, *{1,0}एकता है और कहने के कोड-गेंदबाजी तरीके की तरह अधिक है *1, और शायद गिराया जा सकता है। (
अप्रकाशित

1
नहीं, यह कॉपी-पेस्ट नहीं है। यह बहुत सीधा फॉरवर्ड फॉर्मूला है और इसकी खोज करना भी जरूरी नहीं था। हालाँकि, मुझे आपके द्वारा खोजे गए पृष्ठ मिले, जब मैं जटिल संख्याओं को शुरू करने के बेहतर तरीके की तलाश कर रहा था (उनका कार्यान्वयन अलग है, ठीक है, जैसा कि इस मामले में हो सकता है)। वास्तविक भाग के बारे में टिप के लिए धन्यवाद, यह काम करता है। फिक्सिंग।
ओरियन

5

मतलाब (89 बाइट्स)

[X,Y]=ndgrid(-2:.01:2);C=X+i*Y;Z=C-C;K=Z;
for j=1:99,Z=Z.*Z+C;K=K+(abs(Z)<2);end,imagesc(K)

आउटपुट -

यहाँ छवि विवरण दर्ज करें

इस आवश्यकता को संतुष्ट नहीं करता है कि आंतरिक कोशिकाएं काली या सफेद होनी चाहिए, लेकिन इसका उपयोग करके या तो (1) संतुष्ट हो सकते हैं imshow(K) इसके बजाय है imagesc(K)(1 कम बाइट की आवश्यकता है लेकिन छवि प्रसंस्करण टूलबॉक्स की आवश्यकता है) या (2)colormap hot आवश्यकता होती है (12 और की आवश्यकता है बाइट्स)।

Ungolfed संस्करण -

Z = zeros(N);
K = Z;

[X,Y]=ndgrid(-2:.01:2);
C = X+1i*Y;

for j = 1:99
  Z = Z.*Z + C;
  K(K==0 & abs(Z) > 2) = j;
end

imagesc(K)

लाइब्रेरी का उपयोग करना ठीक है यदि यह डिफ़ॉल्ट रूप से मतलाब में पैक किया गया है और कोई भी उपयोगकर्ता यह अनुमान लगा सकता है कि इसका उपयोग कोड या त्रुटि संदेशों से किया जा रहा है।
मार्क जेरोनिमस

अच्छा लगा, आपने मुझे हरा दिया। मुझे C-Cमेरी जगह पसंद है 0*e(401)। साथ ही, आप उपयोग नहीं कर रहे हैं N। और m+=abs(z)<2आपके स्थान पर मेरे विचार का उपयोग करके हम थोड़ा छोटा हो सकते हैं K(~K&abs(Z)>2)=j
aschepler

डिफ़ॉल्ट colormap jetऔर colormap hotहालांकि दोनों गलत हैं - उनके पास केवल 64 अलग-अलग रंग हैं। colormap(hot(101))नेत्रहीन मुझे अलग नहीं दिखता है। colormap([0,0,0;jet(100)])शायद स्वीकार्य है लेकिन iffy।
एशेपलर

क्या वह काम करता है? ऑक्टेव पर, K=K+abs(Z)<2साधन K=((K+abs(Z))<2)। (इसलिए मैं एक बाइट को खत्म करने के अनुमान के बारे में गलत था +=।)
एशप्लर

2
मैंडलब्रॉट सेट को 90 डिग्री घुमाया जाता है जो अभी भी मैंडेलब्रॉट सेट है।
क्रिस टेलर

4

जावास्क्रिप्ट + एचटीएमएल 5 (356 बी)

(नोट: कुछ पठनीयता के लिए '//' के साथ समाप्त होने वाली लाइनें यहाँ जोड़ी गई हैं)

प्रदर्शन संस्करण (375B):

<body onload='var
w,h=w=C.width=C.height=500,X=C.getContext("2d"),I=X.createImageData(w,h),D=I.data, //
y=0,f=255,T=setInterval(function(x,i,j,k,l,c,o){for(x=0;x<w;){                     //
for(i=x*4/w-2,j=y*4/h-2,k=l=0,c=f;--c&&k*k+l*l<4;)t=k*k-l*l+i,l=2*k*l+j,k=t
D[o=(y*w+x++)*4]=(c*=0xc0ffeeee)&f
D[++o]=c>>8&f
D[++o]=c>>16&f
D[++o]=f}X.putImageData(I,0,0)
++y-h||clearInterval(T)},0)'><canvas id=C>

धीमा संस्करण (356B): आंतरिक कार्य में 'var' और मापदंडों को हटा दें ताकि वैश्विक गुंजाइश का उपयोग किया जाए।

इसे आज़माएं: http://jsfiddle.net/neuroburn/Bc8Rh/

यहाँ छवि विवरण दर्ज करें


यदि मैं लघु संस्करण बनाने के आपके निर्देशों को नहीं समझता तो मुझे क्षमा करें।
मार्क जेरोनिमस

कोई दिक्कत नहीं है। निकालें var w,शुरुआत में, और बदलने function(x,i,j,k,l,c,o)के लिए function()
21euroburɳ

4

जावास्क्रिप्ट, 285 बी

मेरे कोड और MT0 के कोड में कुछ सुधारों के आधार पर , मुझे यह 285B रंग में मिला है:

document.body.appendChild(V=document.createElement('Canvas'));j=(D=(X=V.getContext('2d')).createImageData(Z=V.width=V.height=255,Z)).data;for(x=Z*Z;x--;){k=a=b=c=0;while(a*a+b*b<4&&Z>k++){c=a*a-b*b+4*(x%Z)/Z-3;b=2*a*b+4*x/(Z*Z)-2;a=c;}j[4*x]=99*k%256;j[4*x+3]=Z;}X.putImageData(D,0,0);

क्रिया में: http://jsfiddle.net/acLhe/7/

था: कॉफ़ीस्क्रिप्ट, 342 बी

document.body.appendChild V=document.createElement 'Canvas'
N=99
Z=V.width=V.height=400
P=[]
P.push "rgba(0,0,0,"+Math.random()*i/N+')' for i in [N..0]
X=V.getContext '2d'
for x in [0..Z]
 for y in [0..Z]
  k=a=b=0
  [a,b]=[a*a-b*b+4*x/Z-3,2*a*b+4*y/Z-2] while a*a+b*b<4 and N>k++
  X.fillStyle=P[k-1]
  X.fillRect x,y,1,1

Coffeescript को पठनीय माना जाता है: - / इसे क्रिया में देखें: http://jsfiddle.net/acLhe/6/

मैंडेलब्रोट कॉफ़ीस्क्रिप्ट


ओपी रंग मांगता है जब तक कि आपका मंच रंग का समर्थन नहीं करता। हालांकि, बढ़िया, और अच्छा संक्षिप्त कोड लगता है। PPCG में आपका स्वागत है!
जोनाथन वान मैट्रे

मैं इस आकार
285 बी

4

QBasic, QuickBasic, QB64 - 156 153

SCREEN 13
FOR J=0TO 191
B=J/48-2
FOR I=0TO 191
A=I/48-2
X=A
Y=B
C=0
DO
U=X*X
V=Y*Y
Y=2*X*Y+B
X=U-V+A
C=C+1
LOOP UNTIL C>247OR U+V>4
PSET(I,J),C
NEXT
NEXT

मानक डॉस पैलेट:

यहाँ छवि विवरण दर्ज करें


4

Tcl / Tk, 316

322 324 336 348 349 351 352 353 354 355

अब 3 अक्षर #RGB शॉर्टहैंड स्टाइल कलर ट्रिपल (#RRGGBB ट्रिपल के बजाय) का उपयोग करने वाला एक छोटा संस्करण है, जिसके परिणामस्वरूप अलग-अलग रंग होते हैं।

और कुछ और गोल्फिंग।

rename set s
grid [canvas .c -w 640 -he 640]
.c cr i 320 320 -i [s p [image c photo -w 640 -h 640]]
time {incr x
s y 0
time {incr y
s a 0
s b 0
s n 0
while \$n<99 {s A [expr $a*$a-$b*$b+$x[s f *4/639.-2]]
if [s b [expr 2*$a*$b+$y$f]]*$b+[s a $A]*$a>4 break
incr n}
$p p [format #%03x [expr $n*41]] -t $x $y} 640} 640

भग्न


टीएलसी / टीके, 325

331 333 345 357 358 360 361 362 364 365

मुझे लगता है कि अगर मानदंड सौंदर्य होता तो मैं जीत जाता!

rename set s
grid [canvas .c -w 640 -he 640]
.c cr i 320 320 -i [s p [image c photo -w 640 -h 640]]
time {incr x
s y 0
time {incr y
s a 0
s b 0
s n 0
while \$n<99 {s A [expr $a*$a-$b*$b+$x[s f *4/639.-2]]
if [s b [expr 2*$a*$b+$y$f]]*$b+[s a $A]*$a>4 break
incr n}
$p p [format #%06x [expr $n*16777215/99]] -t $x $y} 640} 640

प्रस्तुतीकरण:

भग्न


1
अच्छा लगा। आप rename set sशीर्ष पर जोड़कर कुछ वर्णों (380 से नीचे, मुझे लगता है) को कम कर सकते हैं और फिर सभी setद्वारा प्रतिस्थापित किया जा सकता हैs
रोलाज़ारो एज़वेयर्स

4

एक्सेल VBA, 251 246 224 223 221 बाइट्स

सेविंग के लिए 5 बाइट्स को धन्यवाद दिया, टेलर स्कॉट को 23 बाइट्स के लिए धन्यवाद

Sub m
D=99
For x=1To 4*D
For y=1To 4*D
p=0
q=0
For j=1To 98
c=2*p*q
p=p^2-q^2-2+(x-1)/D
q=c+2+(1-y)/D
If p^2+q^2>=4Then Exit For
Next
j=-j*(j<D)
Cells(y,x).Interior.Color=Rnd(-j)*1E6*j/D
Next y,x
Cells.RowHeight=48
End Sub

आउटपुट:

डी = 99 के साथ आउटपुट

मैंने एक ऐसा संस्करण बनाया था जो बहुत समय पहले किया था, लेकिन इसमें बहुत सारे एक्स्ट्रा थे जैसे कि उपयोगकर्ता को मूल रंग चुनने और आसान करने के लिए आसान गणित। इसे नीचे गिराना एक दिलचस्प चुनौती थी। Colorविधि का उपयोग करता 1E6एक साधन के रंग की एक विस्तृत श्रृंखला प्राप्त करने के लिए के बाद से मान्य रंग हैं के रूप में 0करने के लिए 2^24। इसे स्थापित करना10^6अच्छा विपरीत क्षेत्रों के ।

स्पष्टीकरण / स्वतः स्वरूपण:

Sub m()

    'D determines the number of pixels and is factored in a few times throughout
    D = 99
    For x = 1 To 4 * D
    For y = 1 To 4 * D
        'Test to see if it escapes
        'Use p for the real part and q for the imaginary
        p = 0
        q = 0
        For j = 1 To 98
            'This is a golfed down version of complex number math that started as separate generic functions for add, multiple, and modulus
            c = 2 * p * q
            p = p ^ 2 - q ^ 2 - 2 + (x - 1) / D
            q = c + 2 + (1 - y) / D
            If p ^ 2 + q ^ 2 >= 4 Then Exit For
        Next

        'Correct for no escape
        j = -j * (j < D)

        'Store the results
        'Rnd() with a negative input is deterministic
        'This is what gives us the distinct color bands
        Cells(y, x).Interior.Color = Rnd(-j) * 1000000# * j / D

    Next x, y

    'Resize for pixel art
    Cells.RowHeight = 48

End Sub

मैंने साथ-साथ खेला D=999और j=1 to 998एक बहुत बड़ी और अधिक सटीक छवि प्राप्त की। परिणाम चुनौती के लिए अप्रासंगिक हैं क्योंकि वे बहुत बड़े हैं लेकिन वे साफ - सुथरे हैं।

डी = 999


@ceilingcat धन्यवाद। यह मेरे मूल से एक कैरीओवर था जिसमें जटिल संख्या गणित के विशेष कार्य थे।
इंजीनियर टोस्ट

क्या वास्तव में> = 4 होना आवश्यक है या क्या आप> 4 से दूर हो सकते हैं? इसके अलावा, के j<99साथ बदल सकते हैं j<D
छत

@EngineerToast आप ड्रॉप कर सकते हैं ()उप नाम से, आप बदलना चाहिए (j<99)करने के लिए (j<d)करने के उद्देश्य के वर्ग कोशिकाओं केवल का उपयोग के लिए है, और आप कर सकते हैं Cells.RowHeight=48के स्थान पर Cells.RowHeight=9, Cells.ColumnWidth=1- यह चारों ओर अपने उत्पादन के साथ और अधिक कठिन खिलवाड़ कर रही है, लेकिन वैध रूप में स्वीकार किया गया है समुदाय द्वारा -
टेलर स्कॉट

1
@TaylorScott मुझे RowHeightVBA टिप्स पोस्ट की ट्रिक याद है और मेरे सभी सुंदर चित्रों को प्राप्त करने के बाद इसे एकीकृत करना था। यह एक अच्छा chunk'o'bytes था, धन्यवाद।
इंजीनियर टोस्ट

मुझे विश्वास है कि आप को स्वैप करके एक और बाइट को दूर करने के साथ भाग प्राप्त कर सकते हैं 2^20के साथ1E6
टेलर स्कॉट

3

पर्ल + जीडी, २६४

$I=new GD::Image $s=499,$s;Z(0,0,0);Z(map rand 256,1..3)for
0..99;for$x(0..$s){for$y(0..$s){for($H=$K=$c=$t=0;$c++<99&&$H*$H+$K*$K<4;){sub
Z{$I->colorAllocate(@_)}($H,$K)=($H*$H-$K*$K+4*$x/$s-2,2*$H*$K+4*$y/$s-2)}use
GD;$I->setPixel($x,$y,$c<99&&$c)}}print $I->png

पेरेल + जीडी से मैंडेलब्रोट फ्रैक्टल

इस कोड से गोल्फ


2
नामांकित: सबसे बदसूरत रंग योजना।
मेवप्लप

3

फ्लोटर, 620 पिक्सेल

एक भाषा जिसे मैंने अपनी चुनौती से प्रेरित होने के साथ-साथ गूढ़ भाषा पीट से बनाया था।

यहाँ छवि विवरण दर्ज करें


2
एक भाषा से लिंक और कोड का विवरण? या वास्तव में, कोड क्या है?
एमडी एक्सएफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.