您的任务是绘制ascii中设置的mandelbrot。它看起来应该像
复数c
在于Mandelbrot集,当序列z(n+1) = z(n)^2 + c
,z(0) = 0
仍然有限。为了这个挑战,您可以考虑c
if的有界序列|z(32)| < 2
。
使用您喜欢的语言中的ascii字符并使用尽可能少的字符,在(-2-i)到(1 + i)的复平面上绘制mandelbrot集,最低分辨率为40x30。
您的任务是绘制ascii中设置的mandelbrot。它看起来应该像
复数c
在于Mandelbrot集,当序列z(n+1) = z(n)^2 + c
,z(0) = 0
仍然有限。为了这个挑战,您可以考虑c
if的有界序列|z(32)| < 2
。
使用您喜欢的语言中的ascii字符并使用尽可能少的字符,在(-2-i)到(1 + i)的复平面上绘制mandelbrot集,最低分辨率为40x30。
Answers:
假设机器代码很重要,我写了一段时间的产品,生成了64字节的320x200彩色Mandelbrot- http://www.pouet.net/prod.php? which=53287
这是代码:
; "Microbrot" by Sir_Lagsalot
org 100h
mov al,13h
int 10h
les ax,[bx]
FillLoop:
cwd
mov ax,di
mov cx,320
div cx
sub ax,100
dec dh
xor bx,bx
xor si,si
MandelLoop:
mov bp,si
imul si,bx
add si,si
imul bx,bx
jo MandelBreak
imul bp,bp
jo MandelBreak
add bx,bp
jo MandelBreak
sub bx,bp
sub bx,bp
sar bx,6
add bx,dx
sar si,6
add si,ax
loop MandelLoop
MandelBreak:
xchg ax,cx
stosb
jmp FillLoop
base64中的编译版本:
sBPNEMQHmYn4uUAB9/GD6GT+zjHbMfaJ9Q+v8wH2D6/bcBkPr+1wFAHrcBAp6ynrwfsGAdPB/gYBxuLbkarrxg==
sudo apt-get install dosbox; dosbox ./Microbrot.com
我被发现从地板上抬起我的下巴。这真是令人印象深刻!
这是我的,它用C语言编写一个ASCII Mandelbrot。
哦..并且它还具有交互式缩放功能。(按小键盘数字1-9放大相应区域)
int main(int argc, char* argv[]){ unsigned
char c='r';double x1,y,y1,t=0,q=78,r=22,x,
x2,y2,a,b,v;do{(c=='r')?(y2=-(y1=-1.6),x1=
-2.0f,x2=0.8):(c=='?')? c=0, printf("%f\
,%f:%f,%f",x1,y1,x2,y2):(c <':'&&c>48)
?x=x1,y=y1,*(c>'3'&&c<':' ?&y1: &t)
+=(y2-y1)/3,*(c>'6'&&c< ':'?&y1
:&t)+=(y2-y1)/3, *((c == '8'
||c+3=='8'||c+3 +3== '8'?&x1
:&t))+=(x2-x1 )/ 3,*((c
=='9'||c+3== '9'||c
+6=='9' ?&x1: &t)
)+=2*(x2-x1) /3,x2=
x1+(x2-x)/3, y2 =y1+(
y2-y)/3:(c=0);for(y= y2;y>=
y1&&c;c=1,y-=(y2-y1)/r, putchar
('\n')) for(x=x1;x<=x2; x+=(x2-
x1)/q){a=b=c=0; while ( ++c&&(a=(t
=a)*a)<4&&(v=b*b)<4)a-=v-x ,b=y+b*2*t;
putchar("#@XMW*N&KPBQYKG$R" "STEEVxHOUV"
"CT()[]%JL={}eou?/\\|Ili+~<>_-^\"!;:`,. "[
c?c>>2:63]);}} while((c=getchar ())!='x');
return 0;/* Mandelbrot - S.Goodwin.2001*/}
普通Lisp-195个字符
(loop for y from -1 to 1 by 1/15 do
(loop for x from -2 to 1 by .04 do
(let*((c 126) (z (complex x y)) (a z))
(loop while (< (abs (setq z (+ (* z z) a))) 2)
while (> (decf c) 32))
(princ (code-char c))))
(terpri))
经过sbcl和clisp测试。结果:
~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}||||||||{{{zyvrwum{|||||}}}}}}~~~~~~~~~~~~~
~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}|||||||||{{{zyxvptwyz{{|||||}}}}}}~~~~~~~~~~~
~~~~~~~~~}}}}}}}}}}}}}}}}}}}}|||||||||{{{{zwLtb huwx{{{{||||}}}}}}}~~~~~~~~~
~~~~~~~~}}}}}}}}}}}}}}}}}}}|||||||||{{zzzyxvn Knwyz{{{{||||}}}}}}~~~~~~~~
~~~~~~~}}}}}}}}}}}}}}}}}}||||||||{{zzzzyyywuk qwxyzzzz{{|||}}}}}}~~~~~~~
~~~~~}}}}}}}}}}}}}}}}}}|||||||{{{zxjnpwwtjsqpi lqrujnxyyxrz{|}}}}}}}}~~~~~
~~~~}}}}}}}}}}}}}}}}}|||||{{{{{zzzxt> qf pttfqeqz{|}}}}}}}}~~~~
~~~~}}}}}}}}}}}}}}}|||{{{{{{{{zzzxwup sxz{||}}}}}}}~~~~
~~~}}}}}}}}}}}}|||{z{{{{{{{zzzzywkmo rwyz{{||}}}}}}}~~~
~~}}}}}}}}}||||{{zwvyyyyyyyyyyyxvsP swvz{||}}}}}}}}~~
~~}}}}|||||||{{{zzwrtsww^uwwxxwvr iz{|||}}}}}}}~~
~}}}|||||||{{{{{zyxws mj Ubhuutl sxz{|||}}}}}}}}~
~}||||||||{{{{{zyytun qq avz{|||}}}}}}}}~
~|||||||{{zzzyxsvvum j Sz{{|||}}}}}}}}~
~{{{{{yyzzzyyxwtbUP qyz{{||||}}}}}}}~
~ pvxyz{{||||}}}}}}}}
~{{{{{yyzzzyyxwtbUP qyz{{||||}}}}}}}~
~|||||||{{zzzyxsvvum j Sz{{|||}}}}}}}}~
~}||||||||{{{{{zyytun qq avz{|||}}}}}}}}~
~}}}|||||||{{{{{zyxws mj Ubhuutl sxz{|||}}}}}}}}~
~~}}}}|||||||{{{zzwrtsww^uwwxxwvr iz{|||}}}}}}}~~
~~}}}}}}}}}||||{{zwvyyyyyyyyyyyxvsP swvz{||}}}}}}}}~~
~~~}}}}}}}}}}}}|||{z{{{{{{{zzzzywkmo rwyz{{||}}}}}}}~~~
~~~~}}}}}}}}}}}}}}}|||{{{{{{{{zzzxwup sxz{||}}}}}}}~~~~
~~~~}}}}}}}}}}}}}}}}}|||||{{{{{zzzxt> qf pttfqeqz{|}}}}}}}}~~~~
~~~~~}}}}}}}}}}}}}}}}}}|||||||{{{zxjnpwwtjsqpi lqrujnxyyxrz{|}}}}}}}}~~~~~
~~~~~~~}}}}}}}}}}}}}}}}}}||||||||{{zzzzyyywuk qwxyzzzz{{|||}}}}}}~~~~~~~
~~~~~~~~}}}}}}}}}}}}}}}}}}}|||||||||{{zzzyxvn Knwyz{{{{||||}}}}}}~~~~~~~~
~~~~~~~~~}}}}}}}}}}}}}}}}}}}}|||||||||{{{{zwLtb huwx{{{{||||}}}}}}}~~~~~~~~~
~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}|||||||||{{{zyxvptwyz{{|||||}}}}}}~~~~~~~~~~~
~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}||||||||{{{zyvrwum{|||||}}}}}}~~~~~~~~~~~~~
从B. Clementson 博客略作修改。
Python中,146 145 143char
z=lambda x,c,n:z(x**2+c,c,n-1)if n*(abs(x)<2)else x
for y in range(-15,16):print''.join(' @'[abs(z(0,x/25.+y/15j,32))<2]for x in range(-50,26))
必须将子句(abs(x)<2)添加到条件表达式中,以防止Python发生溢出。但是...这就是我爱Sage的原因...
鼠尾草133char
z=lambda x,c,n:z(x^2+c,c,n-1)if n else abs(x)<2
for y in range(-15,16):
print''.join(' +'[z(0,x/25+y/15j,32)]for x in range(-50,26))
样本输出(来自python版本)
@
@ @
@@@@@
@@@@@
@@@
@@@ @@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@
@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@
@@@ @@@@@@@@@@@@@
@@@
@@@@@
@@@@@
@ @
@
15j
在python版本中使用
r=range(-50,26)
。然后替换range(-15,16)
为r[35:66]
并替换range(-50,26)
为r
。
{&' *'(2:>[:|([+]*])^:32 ::_:)&0"0(j.1-16%~i.33)+/_2+32%~i.97
* ** ****** * ******** ***** *************** * *********************** *** * **************************** ************************************ ************************************** * **************************************** ** ****** **************************************** ************* **************************************** *************** *************************************** ****************************************************** **** ****************************************************** ********************** ****************************************************** **** *************** *************************************** ************* **************************************** ** ****** **************************************** **************************************** ************************************** * ************************************ * **************************** *********************** *** *************** * ***** ******** ****** * ** *
空格分隔的0/1(而不是星星)为55。
(2:>[:|([+]*])^:32 ::_:)&0"0(j.1-16%~i.33)+/_2+16%~i.49
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
该mb3
文件中:
eval g={-4096..4096..199}'
'h={-8192..4096..99}'
x=;y=;for((i=0;i<30&&x*x+y*y<1<<26;i++)){((v=(x*x-y*y>>12)+h,y=(x*y>>11)+g,x=v));}
printf $[i%10]
'
(无尾随换行符)
在线长为125的终端中运行它:
for h in {-4096..4096..200};do
for g in {-8192..4096..115};do
x=0;y=0
for((i=0;i<30&&x*x+y*y<1<<26;i++));do((v=((x*x-y*y)>>12)+g));((y=((x*y)>>11)+h))
x=$v
done;printf $[i%10];done;echo;done
这基本上是与下面相同的代码,其中计算被硬编码值替换,并且图像围绕x轴翻转。
下面的版本不完全符合打破“从(-2-i)到(1 + i)”的规则。
路加福音:
a=-8601;b=2867;c=-4915;d=4915
((e=(b-a)/99));((f=(d-c)/49))
for((h=d;h>=c;h-=f));do
for((g=a;g<=b;g+=e));do
x=0;y=0
for((i=0;i<30&&x*x+y*y<1<<26;i++));do((v=((x*x-y*y)>>12)+g))
((y=((x*y)>>11)+h));x=$v
done
printf $[i%10]
done;echo;done
该代码仅使用整数算术,因此BASH不需要其他帮助程序即可进行浮点数学运算。
x=;y=
。移位运算符的优先级低于加法和乘法,因此不需要在>>
的左侧操作数周围加括号。您还可以使用{
... }
不是do
... done
,像数字创伤在他的建议提示。您可以将多个表达式放在算术运算中,只需将它们分开即可,
。
(x*x-y*y)>>12
。他们什么也没改变。
puts (-20..20).map{|y|(-40..20).map{|x|z=0;32.times{z=z*z+Complex(x,y)/2e1};z.abs<2??*:' '}*''}
样本输出:
* * * * **** ***** **** * * ****** * * ********** ****************** ****************** * ****************** ******************* *********************** * ********************* * *** ********************** ******* ********************** ********* ********************** ************************************ ************************************** ************************************************** ************************************** ************************************ ********* ********************** ******* ********************** * *** ********************** * ********************* *********************** ******************* * ****************** ****************** ****************** ********** * * ****** * * **** ***** **** * * * *
import Complex
main=mapM_ putStrLn[[" *"!!fromEnum(magnitude(iterate((+(x:+y)).(^2))0!!32)<2)|x<-[-2,-1.95..1]]|y<-[-1,-0.95..1]]
输出:
*
*
* *
****
*****
****
* * ****** * *
** **********
******************
******************
* ******************
*******************
***********************
* *********************
* *** **********************
******* **********************
********* **********************
********************************
**********************************
*********************************************
**********************************
********************************
********* **********************
******* **********************
* *** **********************
* *********************
***********************
*******************
* ******************
******************
******************
** **********
* * ****** * *
****
*****
****
* *
*
*
这是在node.js上运行的咖啡脚本答案:黑色和白色:
m=(x,y)->
a=x
b=y
z=0
for i in [0..99]
(return if i>60 then '*' else if i>10 then '-' else if i>5 then '.' else ' ') if z>4
l=y*y
z=x*x+l
y=2*x*y+b
x=x*x-l+a
'@'
console.log (m x,y for x in [-1.5..0.5] by 2/79).join '' for y in [-1.3..1.3] by 2.6/40
添加颜色:
n='\u001b[0m'
m=(x,y)->
a=x
b=y
z=0
for i in [0..999]
(return if i>100 then '\u001b[33m*'+n else if i>10 then '\u001b[34m-'+n else if i>5 then '\u001b[31m.'+n else ' ') if z>4
l=y*y
z=x*x+l
y=2*x*y+b
x=x*x-l+a
'\u001b[32m@\u001b[0m'
console.log (m x,y for x in [-1.5..0.5] by 2/79).join '' for y in [-1.3..1.3] by 2.6/40
Mathematica 56
RegionPlot[Abs@Nest[#^2+x+I*y&,0,9]<2,{x,-2,1},{y,-1,1}]
Mathematica 77
ArrayPlot[2^-Abs@Nest[#^2+Table[j+i*I,{i,-1.2,1.2,.1},{j,-1.8,0.6,.1}]&,0,6]]
Mathematica 77
Grid@Table[If[Abs@Nest[#^2+y+x*I&,0,30]<2,"*",""],{x,1,-1,-.1},{y,-2,0.5,.1}]
GraphicsGrid@ImageData@Binarize@MandelbrotSetPlot[ImageResolution->40]/.{1->" ",0->"*"}
但是它是84个字符,输出无论如何都不如您的好。
for(-21..20){$y=$_/20;for(-60..18){$r=($x=$_/30);$i=$y;for(1..99){$t=$r;$r=$r**2-$i**2+$x;$i=$t*$i*2+$y}if($r**2+$i**2<4){print"X"}else{print$"}}print$/}
输出:因为我是新用户,所以无法发布图片,因此我将尝试发布输出文本。
X
XX
XXXXXX
XXXXXXX
XXXXX
X X XX X
XX XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXX
X XXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
X XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
X XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
X XXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXX
XX XXXXXXXXXXXXXXXX
X X XX X
XXXXX
XXXXXXX
XXXXXX
XX
X
C#-304个字符
当我编码时,我以可读性和优美的格式编码。我抛出了这个。
using C=System.Console;class Program{static void Main()
{C.WindowWidth=220;C.WindowHeight=80;
int w=220,h=80,m=100;double s=4.0/w,v=4.0/h;
for(int i=0;i<h;i++)for(int j=0;j<w;j++){
double n=s*j-2,u=v*i-2,x=0,y=0;int r=0;
for(r=0;x*x+y*y<4&&r<m;r++){
double t=x*x-y*y+n;y=2*x*y+u;x=t;}
C.Write(r>=m?'#':' ');}C.ReadLine();}}
我确定我的解决方案可以改善,但我会在后面提供一些参考。请注意,Windows控制台将压缩图像。
Haskell:340个字符
好吧,由于我没有看到haskell的答案,所以我发布了我的文章,我试图将其减少到目前为止的最低水平。我相信我可以减少很多。但是,这是第一次尝试:
m (x,y) (z,t)=(z*x-y*t,y*z+x*t);
a (x,y) (z,t)=(x+z,y+t);
r=1.0
f c z 0=z
f c z n=f c (a (m z z) c) (n-1)
e (x,y)=sqrt(x*x+y*y)
t c=(e(f c (0.0,0.0) 32)) < 2
b=map (\z -> (t z, (fst z > r-0.01))) [(x,y) | y <- [-r,-r+(1.0/15)..r], x<-[-2*r,-1.96..r]]
s True="\n"
s _=""
g (b,c)=(if (b) then "@" else " ")++s c
main=putStrLn$concat$map g b
结果如下:
@
@ @
@@@@@
@@@@@
@@@
@@@ @@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@
@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@
@@@ @@@@@@@@@@@@@
@@@
@@@@@
@@@@@
@ @
@
好的-受HN上一些模糊的C代码动画启发,以下是动画版本:
a=27;b=79;c=C(-2.0,-1.0);d=C(1.0,1.0);e=C(-2.501,-1.003)
newtype C = C (Double,Double) deriving (Show,Eq)
instance Num C where C(x,y)*C(z,t)=C(z*x-y*t,y*z+x*t);C(x,y)+C(z,t)=C(x+z,y+t);abs(C(x,y))=C(sqrt(x*x+y*y),0.0)
r(C(x,y))=x;i(C(x,y))=y
f :: C -> C -> Int -> Int
f c z 0=0;f c z n=if(r(abs(z))>2)then n else f c ((z*z)+c) (n-1)
h j k = map (\z->(f (C z) (C(0,0)) 32,(fst z>l - q/2))) [(x,y)|y<-[p,(p+((o-p)/a))..o],x<-[m,(m + q)..l]] where o=i k;p=i j;m=r j;l=r k;q=(l-m)/b
u j k = concat $ map v $ h j k where v (i,p)=(" .,`'°\":;-+oO0123456789=!%*§&$@#"!!i):rst p;rst True="\n";rst False=""
main = putStrLn $ im 0 where cl n (C (x,y))=let cs=(1.1**n-1) in C ((x+cs*(r e))/cs+1,(y+cs*(i e))/cs+1);bl n=cl n c;tr n=cl n d;im n=u (bl n) (tr n)++"\x1b[H\x1b[25A"++im (n+1)
复制/粘贴,执行runghc mandel.hs,尽情享受吧!
这是经过50次迭代后的结果:
77777777777777777777777777777777777777777777777666666666666666666666666666666666
77777777777777777777777777777777777777777766665555555555566666666666666666666666
666777777777777777777777777777666666666665543;4445555555555555555555666666666555
66666666666666666666666666666666666666555554300334555555555555555555555555555555
6666666666666666666666666666666666665555554431:°33345555555555555555555555555544
5566666666666666666666666666666666555555554321 ;00O:3455555555555555555444444444
5555666666666666666666666666666655555555554O+++ :o022334444444444444444444444444
5555556666666666666666666666665555555555543210O-+O112333344444444444444444444444
55555555666666666666666666665555555555444333210o`O012333333444444444444444444444
4555555555566666666666666555555555544444333331O+°°,'0233333334444444444444444433
44444445555555556666555555555444444444433333210o-:O01122333333334444444444443333
44444444444444445555444444444444444444333332211O+ -o1112222223333333344433333222
444444444444433331133334444444444444433332221110o"+O0111222222222222222222222222
34444444443333330OO03333334444444443332222221100O+-oO001122222222221110-O1111122
22333333333332210--01223333333333322222222211000o-°+o00000122222111110o°;o001111
11OO112222222111O;;O111222222211OO111122211000Oo-" :+ooOOOO.O0000000OOo'°oOO0000
0O;+O01122211000O--O00011221110O+;O00000OO +oooo-: :-+oo++";oOO0000Ooo+;;+oooO00
o+"+oO00OO OOOOoo::ooOOOO°OO00Oo+"+ooOooo+;°---",' ,,";--: ;-+oo+ +++;;°°;;-++:;
,° °':°: ` "`".°° °° "°". :'", '°`°":`°` ,,`` . . .°°'°° ` .. `'°.
+-`-oo+oo+'+o+`--°°;-`+o+"+oo+oo-'-++;+++-:,:::"` °::°° :-;;--,;-; " " ;-;":
OO"-O0000000000Oo--oO0000000000O-:oO0000Oo::+++;;: ":"-++-';+oooOOoooo-::-oooo++
10;-111222222110O--O011222222111- 01111110oOOOoo-: :-ooooo`:OO000000OO+;;+OOO000
22122222222222110++0112222222222111222222221000O+:,;.O000001111111100Oo:-OO00000
3344444433333332-,°-2333333344444433322222221100o-;oO00011222222221111O'+0111111
444444444444333320023333444444444444433322221110O.:O0011222222222222211-01112222
44444444444444443333444444444444444444333332211O. -o1112222222223333333333322222
44444444445555555555555555444444444444433333210O-"oO1122223333333444444444433333
444555555555666666666666555555555444444433333' '`:+O0233333333444444444444444433
以及指向更易读代码的链接:
http://yannesposito.com/Scratch/zh-CN/blog/Haskell-Mandelbrot/
SpecBAS 201
我知道这是一个老问题,但是我们一直在BASIC编程论坛中与Perlin的ascii brot一起玩,而这是我的-在SpecBAS(这是一种Sinclair BASIC解释器)中,它实际上只是文本,还有一个代码行:
1FOR y=-29TO 30:FOR x=-10TO 89:LET m,r=0:FOR k=0TO 224:LET j=r^2-m^2-2+x/25,m=2*r*m+y/25,r=j,l=k,k=IIF(j^2+m^2>11,225,k):NEXT k:PRINT INK l;"ð";:NEXT x:NEXT y
1FOR y=-29TO 30:FOR x=-10TO 89:LET m,r=0:FOR k=0TO 112:LET j=r^2-m^2-2+x/25,m=2*r*m+y/25,r=j,l=k&15,k=IIF(j^2+m^2>11,113,k):NEXT k:PRINT" .:-;!/>)|&IH%*#"(l+1);:NEXT x:NEXT y
。
Perl-193个字符
$Y=-1.2;for(0..24){$X=-2;for(0..79){($r,$i)=(0,0);for(0..15){$n=$_;$r=($x=$ r)*$x-($y=$i)*$y+$X;$i=2*$x*$y+$Y;$x*$x+$y*$y>4&&last}print unpack("\@$n a" ,".,:;=+itIYVXRBM ");$X+=3/80}$Y+=2.4/25}
结果
,,,,,,,,,,,::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::::::::::::
,,,,,,,,,:::::::::;;;;;;;;;;;;;;;;;;;;;;======+iRV+++====;;;;;;:::::::::::::::::
,,,,,,,,::::::;;;;;;;;;;;;;;;;;;;;;;========+++itVXYYRi======;;;;;;:::::::::::::
,,,,,,:::::;;;;;;;;;;;;;;;;;;;;;;=========++++ttIR VIt+++=====;;;;;;;::::::::::
,,,,,::::;;;;;;;;;;;;;;;;;;;;==========+++iitIX ti++++====;;;;;;;::::::::
,,,,:::;;;;;;;;;;;;;;;;;;;=========++ittttttIYX VIItiiiii++==;;;;;;;::::::
,,,::;;;;;;;;;;;;;;;;;;======+++++iit R RY XX Y++=;;;;;;;;::::
,,::;;;;;;;;;;;;;;;;===+++++++++iiitIVB Mti++=;;;;;;;;:::
,,:;;;;;;;;;;;====+XtiiiiiiiiiittIYM RIti+==;;;;;;;;::
,:;;;;;=======+++iiI XVVYV VYYIIYYB t+===;;;;;;;;:
,;;========++++++ttIY MRB Mi+===;;;;;;;;;
,========+++iiiIRYYX t++====;;;;;;;;
,++iitYttttIIIVXM Yti++====;;;;;;;;
,++iitYttttIIIVXM Yti++====;;;;;;;;
,========+++iiiIRYYX t++====;;;;;;;;
,;;========++++++ttIY MRB Mi+===;;;;;;;;;
,:;;;;;=======+++iiI XVVYV VYYIIYYB t+===;;;;;;;;:
,,:;;;;;;;;;;;====+XtiiiiiiiiiittIYM RIti+==;;;;;;;;::
,,::;;;;;;;;;;;;;;;;===+++++++++iiitIVB Mti++=;;;;;;;;:::
,,,::;;;;;;;;;;;;;;;;;;======+++++iit R RY XX Y++=;;;;;;;;::::
,,,,:::;;;;;;;;;;;;;;;;;;;=========++ittttttIYX VIItiiiii++==;;;;;;;::::::
,,,,,::::;;;;;;;;;;;;;;;;;;;;==========+++iitIX ti++++====;;;;;;;::::::::
,,,,,,:::::;;;;;;;;;;;;;;;;;;;;;;=========++++ttIR VIt+++=====;;;;;;;::::::::::
,,,,,,,,::::::;;;;;;;;;;;;;;;;;;;;;;========+++itVXYYRi======;;;;;;:::::::::::::
,,,,,,,,,:::::::::;;;;;;;;;;;;;;;;;;;;;;======+iRV+++====;;;;;;:::::::::::::::::
我认为它在几年前赢得了混淆的Perl竞赛。
Python,115。
r=range
for _ in r(-11,12):
for f in r(-39,41):
v=u=f/22.-_/11j;exec"u=u*u+v;"*40;print"\b"+chr(32+(u.real<4)),
仅适用于80x24终端,但是您可以先添加print
后for
进行修复。
样本输出(带有附加print
说明。):
!
!!!
!!!!!
! ! !!!!!!!! !
!!!!!!!!!!!!!!!!! !!
! !!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!
! ! !!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!
! ! !!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!
! !!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!! !!
! ! !!!!!!!! !
!!!!!
!!!
!
完全打高尔夫球的无参数版本,仅满足以下要求:
#include <complex>
#include <iostream>
#define C complex<float>
using namespace std;int main(void){C p(-2,1),q(1,-1);char i,j,k;
for(j=0;j<30;++j){for(i=0;i<80;++i){C r=q-p,c((i+0.5)*r.real()/
81+p.real(),(j+0.5)*r.imag()/31+p.imag());r=0;k=64;while
(abs(r)<=2&&(--k!=32))r=r*r+c;cout<<k;}cout<<endl;}}
该实现完全没有意义。只是看到使用本地复杂时间可以做些什么(las,有点罗word)。
取消高尔夫和参数化,以便它可以做区域
#include <complex>
#include <iostream>
using namespace std;
void M/*andlebrot*/(ostream& o,
complex<float> p, complex<float> q,
int l, int h) {
char i,j,k;
for(j=0; j<h; ++j){
for(i=0; i<l; ++i){
complex<float> r=q-p,c((i+0.5)*r.real()/(l+1)+p.real(),
(j+0.5)*r.imag()/(h+1)+p.imag() );
r=0;
k='@';
while(abs(r)<=2&&(--k!=' ')){
r=r*r+c;
}
o<<k;
}
o<<endl;
}
}
int main(int argc, char*argv[]){
M(cout,complex<float>(-2.15,1.25),complex<float>(0.65,-1.25),80,30);
}
输出量
$ g++-fsf-4.7 mandelbrot_golf.cc --std=c++11
$ ./a.out
???????>>>>>>=====================<<<<<<<<<;;;;:974048:;<<<<<<======>>>>>>>>>>>>
??????>>>>>=====================<<<<<<<<<<;;;:9872 '89:;;<<<<<<======>>>>>>>>>>
?????>>>>=====================<<<<<<<<<<;;;::8$ /# &349:;;;;<<<<=======>>>>>>>>
????>>>=====================<<<<<<<<<;;::::9986- *589::;;;;<<<========>>>>>>
????>>====================<<<<<<<<;;;9988998775/ 57889::::9;<<========>>>>>
???>>===================<<<<<<;;;;;:96$.355 &() 2$28887,8:;<========>>>>
??>>==================<<<<;;;;;;;::987. 2$ )9;<<========>>>
??>================<<<;;;;;;;;;::::8753+ '8:;;<<========>>
?>=============<<<;::::;;;;;::::997 589:;<<=========>
?>========<<<<<;;;:85899987999998861% (54;<<<========>
?=====<<<<<<<;;;;::8 03564&46677763! 28:<<<=========
>==<<<<<<<<;;;;;::9873 , ' 554# 69;<<<<========
==<<<<<<<<;;;;;:998$3, 00 -3:;<<<<========
=<<<<<<<;;::::975654) ) ,9:;<<<<========
<;;;::99:::999762 # 9:;;<<<<========
/589:;;<<<<========
<;;;::99:::999762 # 9:;;<<<<========
=<<<<<<<;;::::975654) ) ,9:;<<<<========
==<<<<<<<<;;;;;:998$3, 00 -3:;<<<<========
>==<<<<<<<<;;;;;::9873 , ' 554# 69;<<<<========
?=====<<<<<<<;;;;::8 03564&46677763! 28:<<<=========
?>========<<<<<;;;:85899987999998861% (54;<<<========>
?>=============<<<;::::;;;;;::::997 589:;<<=========>
??>================<<<;;;;;;;;;::::8753+ '8:;;<<========>>
??>>==================<<<<;;;;;;;::987. 2$ )9;<<========>>>
???>>===================<<<<<<;;;;;:96$.355 &() 2$28887,8:;<========>>>>
????>>====================<<<<<<<<;;;9988998775/ 57889::::9;<<========>>>>>
????>>>=====================<<<<<<<<<;;::::9986- *589::;;;;<<<========>>>>>>
?????>>>>=====================<<<<<<<<<<;;;::8$ /# &349:;;;;<<<<=======>>>>>>>>
??????>>>>>=====================<<<<<<<<<<;;;:9872 '89:;;<<<<<<======>>>>>>>>>>
20{40{0.1{.{;..*2$.*\- 20/3$-@@*10/3$-..*2$.*+1600<}*}32*\;\;@@(}60*;(n\}40*;
它可能可以打更多的高尔夫球。结果是一个近似值,因为我必须使用整数。
输出:
000000000000000000000000000000000000000010000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000001000000000000000000000000
000000000000000000000000000000000000001000000000000000000000
000000000000000000000000000000000000111000000000000000000000
000000000000000000000000000000000000111110000000000000000000
000000000000000000000000000000000000011100000000000000000000
000000000000000000000000000001000110111100010000000000000000
000000000000000000000000000000100111111111110000000000000000
000000000000000000000000000001011111111111110111000000000000
000000000000000000000000000001111111111111111110000000000000
000000000000000000000000000000111111111111111110000000000000
000000000000001000000000000011111111111111111111000000000000
000000000000000000000000000011111111111111111111000000000000
000000000000000000000000000111111111111111111111000000000000
000000000000000000000000001111111111111111111111100000000000
000000000000000001111110001111111111111111111111100000000000
000000000000000011111111101111111111111111111111100000000000
000000000000100111111111111111111111111111111111000000000000
000000000001101111111111111111111111111111111111000000000000
011111111111111111111111111111111111111111111100000000000000
000000000000001111111111111111111111111111111110000000000000
000000000000000111111111111111111111111111111111000000000000
000000000000000001111111111111111111111111111111100000000000
000000000000000001111111101111111111111111111111000000000000
000000000000000001011100000111111111111111111111100000000000
000000000000000000000100000111111111111111111111000000000000
000000000000000100000000001111111111111111111111100000000000
000000000000000100000000000011111111111111111111000000000000
000000000000000000000000000011111111111111111110000000000000
000000000000000000000000000001111111111111111111000000000000
000000000000000000000000000000111111111111111111000000000000
000000000000000000000000000001101111111111111000000000000000
000000000000000000000000000011000011111110100000000000000000
000000000000000000000000000000000000111100000000000000000000
000000000000000000000000000000000000111110000000000000000000
000000000000000000000000000000000000111100000000000000000000
000000000000000000000000000000000000011000000000000000000000
000000000000000000000000000000000000001000000000000000000000
000000000000000000000000000000000000000000000000000000000000
要使用空格和星号,大约还需要9个字节:
20{40{0.1{.{;..*2$.*\- 20/3$-@@*10/3$-..*2$.*+1600<}*}32*' *'=\;\;@@(}60*;(n\}40*;]''+
for(y=-1;y<1;y+=.05){for(x=-2;x<1;x+=.05){for(n=i=r=0;r*r+i*i<4&&++n<32;r=t){t=r*r-i*i+x
i=2*r*i+y}
if(n<32)print n%A else print " "}
2}
输出:
1111112222233333333333333344444445567190 54444333322222222222 11111222233333333333333334444444555780 0765444433333222222222 11111222333333333333333344444445556799 1865544443333322222222 11112223333333333333333444444455561 6 7985554444333332222222 111122333333333333333344444445566784 086555544333333222222 111222333333333333333444444444556667797 787665554433333222222 111223333333333333344444455678988903 309866625443333322222 11123333333333333344444555673430 0 203 98897543333332222 11223333333333333444455556672 75 224654544333332222 11233333333333344455555566781 29554333333222 11233333333333445555555666808 7654333333222 113333333334445666555666782 5 37654433333322 123333334444557477778777782 70254433333322 12333344444556749990198881 64433333322 13334444445556709 25 51902 4864433333332 13344444455557795 728 4054443333332 1344444455557792 6 854443333332 1444444555672919 654443333332 144444666678368 8654443333332 1556787778915 07654443333332 1 387654443333332 1556787778915 07654443333332 144444666678368 8654443333332 1444444555672919 654443333332 1344444455557792 6 854443333332 13344444455557795 728 4054443333332 13334444445556709 25 51902 4864433333332 12333344444556749990198881 64433333322 123333334444557477778777782 70254433333322 113333333334445666555666782 5 37654433333322 11233333333333445555555666808 7654333333222 11233333333333344455555566781 29554333333222 11223333333333333444455556672 75 224654544333332222 11123333333333333344444555673430 0 203 98897543333332222 111223333333333333344444455678988903 309866625443333322222 111222333333333333333444444444556667797 787665554433333222222 111122333333333333333344444445566784 086555544333333222222 11112223333333333333333444444455561 6 7985554444333332222222 11111222333333333333333344444445556799 1865544443333322222222 11111222233333333333333334444444555780 0765444433333222222222
80,Kdf/2f-_m*{_{_~*2*[\2f#~-\]1$.+}9*\;~mh4<}%80/zN*
说明:
80,Kdf/2f- Push [-2, -1.95, ..., 1.95]
_m* Cartesian product with itself
{ }% Map over each pair [cx, cy]:
_ Push a copy [zx, zy]
{ }9* Iterate nine times:
_~*2* Push 2*zx*zy
[\2f#~-\] Make a pair with zx^2-zy^2
1$.+ Push [cx, cy] and sum vectors
\; Destroy [cx, cy]
~mh Calculate sqrt(zx^2+zy^2)
4< 1 if bounded, 0 if not
80/ Split into rows of 80 booleans
z Transpose this matrix
N* Join rows with newlines
[x,y,q]=ndgrid(-1:.03:1,-2:.01:.5,32);c=i*x+y;z=q*0;for i=1:100;z=z.^2+c;end;[q+3*(abs(z)<2),'']
#
##
#####
#############
##################
###################
####################
##################
#############
## ########################## # #
## # ################################################ ####
######### # ######################################################### # #
######### ################################################################## ########
##################################################################################
# #####################################################################################
# ##################################################################################### #
#### ########################################################################################### #
# ############################################################################################## #
####################################################################################################
##############################################################################################################
########################################################################################################
# ##############################################################################################################
##### ############ ### ############################################################################################################
############################## ################################################################################################################
################################### ###############################################################################################################
## ####################################### ################################################################################################################
########################################### ############################################################################################################### #
############################################### ################################################################################################################
################################################## #############################################################################################################
######### ################################################# ###########################################################################################################
## ## ####################################################################################################################################################################
######################################################################################################################################################################
######## ################################################# ###########################################################################################################
############################################### #############################################################################################################
################################################ ##############################################################################################################
######################################### ################################################################################################################
# # ###################################### ###############################################################################################################
################################ ##############################################################################################################
##### ##################### # #################################################################################################################
#### # ### # # ############################################################################################################
# ### #########################################################################################################
####################################################################################################### ###
# ## ##########################################################################################################
# ##################################################################################################
###################################################################################################
#################################################################################################
######################################################################################
#####################################################################################
############################################################################ #########
########## ################################################################ # #########
####### ## #################################################### #
########################################### ## #####
## # # #### #### ## ### #
###############
####################
#####################
###################
################## #
#########
#####
#
0>:00p58*`#@_0>:01p78vv$$<
@^+1g00,+55_v# !`\+*9<>4v$
@v30p20"?~^"< ^+1g10,+*8<$
@>p0\>\::*::882**02g*0v >^
`*:*" d":+*:-*"[Z"+g3 < |<
v-*"[Z"+g30*g20**288\--\<#
>2**5#>8*:*/00g"P"*58*:*v^
v*288 p20/**288:+*"[Z"+-<:
>*%03 p58*:*/01g"3"* v>::^
\_^#!:-1\+-*2*:*85<^
这是我几年前为Rosetta Code提交实现的Mandelbrot渲染器。由于Befunge没有浮点,因此它使用一种用整数运算模拟的14位定点算法。以ASCII字符集作为“调色板”,最多可进行94次迭代。
最初实现该功能时要考虑到可移植性,而不是尺寸,但仍应保持良好的打法。
样本输出
Python 444
print (lambda Ru,Ro,Iu,Io,IM,Sx,Sy:reduce(lambda x,y:x+y,map(lambda y,Iu=Iu,Io=Io,Ru=Ru,Ro=Ro,Sy=Sy,L=lambda yc,Iu=Iu,Io=Io,Ru=Ru,Ro=Ro,i=IM,Sx=Sx,Sy=Sy:reduce(lambda x,y:x+y,map(lambda x,xc=Ru,yc=yc,Ru=Ru,Ro=Ro,i=i,Sx=Sx,F=lambda xc,yc,x,y,k,f=lambda xc,yc,x,y,k,f:(k<=0)or (x*x+y*y>=4.0) or 1+f(xc,yc,x*x-y*y+xc,2.0*x*y+yc,k-1,f):f(xc,yc,x,y,k,f):chr(64+F(Ru+x*(Ro-Ru)/Sx,yc,0,0,i)),range(Sx))):L(Iu+y*(Io-Iu)/Sy),range(Sy))))(-2.1, 0.7, -1.2, 1.2, 30, 80, 24)
这是来自python开发人员的一个,
虽然不是很短,但是
却很漂亮。
高尔夫代码:
#include<iostream>
void main(){for(float i=-1;i<=1;i+=0.03125){for(float r=-2;r<=1;r+=.03125){float zr=r,zi=i;for(int n=0;n<31;n++){float nzr=zr*zr-zi*zi;zi=zr*zi*2;zr=nzr;zr+=r;zi+=i;}if(zi*zi+zr*zr<4){std::cout<<"*";}else{std::cout<<" ";}}std::cout<<"\n";}}
输出示例:
*
**
***
****** *
*******
********
*******
*****
* * * *** * *
*************** *
*** ******************
*********************** ***
****************************
* ****************************
* ****************************
********************************
********************************
********************************* *
*************************************
************************************
* ** ***********************************
** ****** ************************************
********** *************************************
************* ************************************
************** ************************************
*************** ***********************************
***************************************************
******************************************************
******************************************************
************************************************************************
******************************************************
******************************************************
***************************************************
*************** ***********************************
************** ************************************
************* ************************************
********** *************************************
** ****** ************************************
* ** ***********************************
************************************
*************************************
********************************* *
********************************
********************************
* ****************************
* ****************************
****************************
*********************** ***
*** ******************
*************** *
* * * *** * *
*****
*******
********
*******
****** *
***
**
*
这个答案是无效的,因为该语言是在挑战之后很好地创建的,但是我正在发布它,以便有一种使用该语言的解决方案。使它漂亮地剃了3个字节!
1~12$:;56*[i53*$:1-0c*99*[di39*$:2-+048*[d$~2`9&d*2c+]02@ik" "+Oxx]25*Ox].
!!!!!!!!""""""######################$$$$$$$$%%%&&(,**+ %$$$$$$######"""""""""""""
!!!!!!!"""""######################$$$$$$$$$%%%%''(*3+)'&%%$$$$$$######"""""""""""
!!!!!!""""#####################$$$$$$$$$$%%%%&(*--? 5+)(&%%%$$$$$#######"""""""""
!!!!!""""####################$$$$$$$$$$%%&&&&'(, 2)'&%%%%%$$$#######""""""""
!!!!"""####################$$$$$$$$$%%&&&&'''()- /)('&&&&&%%$$$#######""""""
!!!!""###################$$$$$$$%%%%&)1//))+ ,202 3/.+. ('''(/&%$########"""""
!!!""##################$$$$$%%%%%%&&'), / 4 +00.2+%%$########""""
!!""################$$$%%%%%%%%%&&&'()+6 +'&%$$########"""
!!"##############$$%%&%%%%%%%%&&&''2 62 5,)'&%%$$########""
!!#########$$$$$%%&'.('''''''''''((*/ ,)+&%$$#########"
!"#####$$$$$$$%%%%&(-,+/)*3+)*(())+ 2&%$$$########"
!###$$$$$$$$%%%%%&'')+1 <56 ;/,++. +(&%$$$#########
!#$$$$$$$$%%%%%%&'')+.5 ;/4 4)&%$$$$########
!$$$$$$$$%%&&&'(4*)+/ :=&%%$$$$########
!$%%%%&'&&&&''()+6; 7 )'&%%$$$$########
?-)'&&%%$$$$########
!$%%%%&'&&&&''()+6; 7 )'&%%$$$$########
!$$$$$$$$%%&&&'(4*)+/ :=&%%$$$$########
!#$$$$$$$$%%%%%%&'')+.5 ;/4 4)&%$$$$########
!###$$$$$$$$%%%%%&'')+1 <56 ;/,++. +(&%$$$#########
!"#####$$$$$$$%%%%&(-,+/)*3+)*(())+ 2&%$$$########"
!!#########$$$$$%%&'.('''''''''''((*/ ,)+&%$$#########"
!!"##############$$%%&%%%%%%%%&&&''2 62 5,)'&%%$$########""
!!""################$$$%%%%%%%%%&&&'()+6 +'&%$$########"""
!!!""##################$$$$$%%%%%%&&'), / 4 +00.2+%%$########""""
!!!!""###################$$$$$$$%%%%&)1//))+ ,202 3/.+. ('''(/&%$########"""""
!!!!"""####################$$$$$$$$$%%&&&&'''()- /)('&&&&&%%$$$#######""""""
!!!!!""""####################$$$$$$$$$$%%&&&&'(, 2)'&%%%%%$$$#######""""""""
!!!!!!""""#####################$$$$$$$$$$%%%%&(*--? 5+)(&%%%$$$$$#######"""""""""
!!!!!!!"""""######################$$$$$$$$$%%%%''(*3+)'&%%$$$$$$######"""""""""""
这利用了Python对复数的内部处理的优势,因此我可以做1~12$:;
(等同(-1)**0.5
于Python)来获得虚数单位。然后有三个嵌套for循环,它遍历y
,x
和z=z^2+c
。打破最内层的循环是必要的(并由完成d$~2`9&
),因为否则,数字将变得很大以至于变得很大(NaN+Nanj)
,其大小显然小于2。
1 v
2-\:01-(?;0
*&\0084
?!\}::*{::*$@-}2**}:@@:{+r+::*{::*$@+4(&1-:&*
ao\&~:*$:*+4(}" *"{?$~o1aa+,+:1)22@@?!.~~~1aa+,-
在线尝试!请注意,使用TIO大约需要25秒,所以请耐心等待!
更多的是自我挑战,而不是认真的进入。产生以下输出:
*
*
* *
****
*****
****
* * ****** * *
** **********
******************
******************
* ******************
*******************
***********************
* *********************
* *** **********************
******* **********************
********* **********************
********************************
**********************************
*********************************************
**********************************
********************************
********* **********************
******* **********************
* *** **********************
* *********************
***********************
*******************
* ******************
******************
******************
** **********
* * ****** * *
****
*****
****
* *
*
*
输出:
!!!!!!!!"""""""""""""""""""""""""""##########$$$$%%&(.)(*2%$#######""""""""!!!!!!!!!!!!!!!!!
!!!!!!!"""""""""""""""""""""""""""###########$$$$%%&'(*0+('&%$$#######""""""""!!!!!!!!!!!!!!!
!!!!!!""""""""""""""""""""""""""############$$$$$%&(**-:::1('&%$$$#######""""""""!!!!!!!!!!!!!
!!!!!""""""""""""""""""""""""""############$$$%%%&'(+:::::::02*&%$$$$$######""""""""!!!!!!!!!!!
!!!"""""""""""""""""""""""""############$$%%%%%&&&'(4:::::::8:'&&%%%$$$$$####"""""""""!!!!!!!!!
!!!""""""""""""""""""""""""##########$$$%&&'2''''(())+7::::::1*)(('&%%%%%'&$###"""""""""!!!!!!!!
!!!"""""""""""""""""""""""#######$$$$$$%%&(-:0/+*,::2::::::::::::5:::('''(.+&%$##"""""""""!!!!!!!
!!""""""""""""""""""""""#####$$$$$$$$$%%%&&(*3:::7:::::::::::::::::::::,::8:1)%$$##""""""""""!!!!!
!""""""""""""""""""""####$$$$$$$$$$$%%%%&'()*.8::::::::::::::::::::::::::::56&%$$###""""""""""!!!!
!!""""""""""""""""####$%%%$$$$$$$$%%%%%&'):8:5:::::::::::::::::::::::::::::0*(&%%$$##""""""""""!!!!
!"""""""""""######$$%%(+'&&&&&&&&&&&&&&''),3:::::::::::::::::::::::::::::::::+(()%$###""""""""""!!!
!"""""""#########$$$$%%)3*()(()4+(('''''(*9::::::::::::::::::::::::::::::::::::::*%$###"""""""""""!!
!"""##########$$$$$$%%&'(*/:7.13::/:+*))*-:::::::::::::::::::::::::::::::::::::,(&%$####""""""""""!!
""##########$$$$$$$%&&&()+0:::::::::::2,,0:::::::::::::::::::::::::::::::::::::::&$$####"""""""""""!
"#########$$$$$$$%(''((*0:::::::::::::::1::::::::::::::::::::::::::::::::::::::,'%$$#####""""""""""!
########$%%%%%%&&'(+.,..5::::::::::::::::::::::::::::::::::::::::::::::::::::::'%%$$#####""""""""""!
$$$%%&&(&&'''''(,*+.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::*'&%$$$#####""""""""""!
$$&%%'):)('))((),,,9::::::::::::::::::::::::::::::::::::::::::::::::::::::::,('&%$$$#####""""""""""!
##$$$##$%%%%%%&&&'(*8181::::::::::::::::::::::::::::::::::::::::::::::::::::::*&%$$$#####""""""""""!
"#########$$$$%%%&(+(()*.:::::::::::::::4:::::::::::::::::::::::::::::::::::::::&%$$#####""""""""""!
""##########$$$$$$$%&&'+*-2::::::::::::..4::::::::::::::::::::::::::::::::::::::/&$$####"""""""""""!
""""##########$$$$$$%&&'(*2::4::::::0.**+-:::::::::::::::::::::::::::::::::::::,(&%$####"""""""""""!
!"""""##########$$$$%%&'-3.-*)*-:+)8(((()*.:::::::::::::::::::::::::::::::::::::,'%$####""""""""""!!
!"""""""""#######$$$%%'4''&&&')('&&&&&''(+/::::::::::::::::::::::::::::::::::-5+-%$###""""""""""!!!
!"""""""""""""""####$%&%%%%%%$$$%%%%%&&&')::::::::::::::::::::::::::::::::::.('&%$$###""""""""""!!!
!"""""""""""""""""""###$$$$$$$$$$$$%%%%%&(-*-1:::::::::::::::::::::::::::::/(&%$$###""""""""""!!!!
!!"""""""""""""""""""""#####$$$$$$$$$%%%%&'(+::::::::::::::::::::::::::0::::,7%$$##""""""""""!!!!!
!!"""""""""""""""""""""""#######$$$$$$%%%&*:::4:+-::::::::::::::::::.)):7)+,(%$##""""""""""!!!!!!
!!!""""""""""""""""""""""""##########$$$%&:)2/)(((+,*+,/::::::/,+))5(&&&&&'+%$##""""""""""!!!!!!!
!!!!"""""""""""""""""""""""""###########$$%%%%%&&&''),::::::::8('&&%%%%$$$$###"""""""""!!!!!!!!!
!!!!""""""""""""""""""""""""""############$$$%%%%&'(+::::::::-(&%%$$$$$#####"""""""""!!!!!!!!!!
!!!!!""""""""""""""""""""""""""############$$$$$%%)+2,/:::,**'%$$$$#######""""""""!!!!!!!!!!!!
!!!!!!"""""""""""""""""""""""""""###########$$$$$%&&'),:,)'&%$$$#######""""""""!!!!!!!!!!!!!!
!!!!!!!!""""""""""""""""""""""""""###########$$$$%&'(.,,-*%%$#######"""""""!!!!!!!!!!!!!!!!!
*