本帖最后由 LBQ 于 2015-9-6 20:35 编辑
Mandelbrot Set
#red method def red(i,j) Kernel.const_set("W",1024);Kernel.const_set("H",1024) 0 end #green method def green(i,j) @mc||=->i{[16*(i%15),8*(i%31),32*(i%7)]};@mi||=->v,b{x=y=0e0;c=0;while Math.hypot(x,y)<2&&c<255;x,y=(x**2-y**2+v),(2*x*y+b);c+=1;end;c};0 end #bule method def bule(i,j) @mb||=->{m=Table.new W,H;W.times{|x|H.times{|y|o=(x-W*11/15.0)/W*3;l=(y-H/2.0)/H/3*10;m[x,y]=@mc[@mi[o,l]][0]}};m};@md||=@mb[];@md[i,j] end
#red method
def red(i,j)
Kernel.const_set("W",1024);Kernel.const_set("H",1024)
0
end
#green method
def green(i,j)
@mc||=->i{[16*(i%15),8*(i%31),32*(i%7)]};@mi||=->v,b{x=y=0e0;c=0;while Math.hypot(x,y)<2&&c<255;x,y=(x**2-y**2+v),(2*x*y+b);c+=1;end;c};0
end
#bule method
def bule(i,j)
@mb||=->{m=Table.new W,H;W.times{|x|H.times{|y|o=(x-W*11/15.0)/W*3;l=(y-H/2.0)/H/3*10;m[x,y]=@mc[@mi[o,l]][0]}};m};@md||=@mb[];@md[i,j]
end
跟开作弊没什么两样了233
懒得解决那个讨厌的const_set了就那样吧。
说实话那些codegolf.stackexchange上的这些功底也够深厚,我是别想有那种能力了。
这个代码基本上就是基于Rosetta Code上面的,我只是一直把这个改短罢了
(并且别人有数学功底的可以用这个弄出更加可怕的图形我是没那个能力了 |