あなたの仕事は、ASCIIでマンデルブロセットを描画することです。次のようになります
複素数c
マンデルブロ集合、シーケンスの嘘z(n+1) = z(n)^2 + c
、z(0) = 0
有界遺跡。この課題の目的のために、c
ifの範囲のシーケンスを考慮することができます|z(32)| < 2
。
できるだけ少ない文字を使用して、お気に入りの言語でアスキー文字を使用して、(-2-i)から(1 + i)までの複雑な平面に設定されたマンデルブロを40x30の最小解像度でプロットします。
あなたの仕事は、ASCIIでマンデルブロセットを描画することです。次のようになります
複素数c
マンデルブロ集合、シーケンスの嘘z(n+1) = z(n)^2 + c
、z(0) = 0
有界遺跡。この課題の目的のために、c
ifの範囲のシーケンスを考慮することができます|z(32)| < 2
。
できるだけ少ない文字を使用して、お気に入りの言語でアスキー文字を使用して、(-2-i)から(1 + i)までの複雑な平面に設定されたマンデルブロを40x30の最小解像度でプロットします。
回答:
- 64バイトで320x200の色マンデルブロを生成し、バックしながら、マシンコード数を仮定すると、私はPROD aを書いた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マンデルブロとして記述されたASCIIマンデルブロを行うものです。
ああ..また、インタラクティブなズーム機能も備えています。(キーパッドの数字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*/}
もともとここに投稿http://marquisdegeek.com/rnd_obs.php
Common 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 143文字
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がオーバーフローを回避できるようにしなければなりませんでした。しかし...これは私がセージを愛する理由です...
セージ、133文字
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 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 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 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 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 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 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 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 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 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 0 0 0 0 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 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 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 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 0 0 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 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 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 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 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 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 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 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 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 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 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 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 1 1 1 1 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 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 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 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 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 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 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 1 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軸を中心に反転します。
以下のバージョンは、「from(-2-i)to(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*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文字
さて、私はハスケルの答えを見つけられないので、私は自分の投稿をしました。大幅に削減できると確信しています。しかし、これが最初の試みです。
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
結果は次のとおりです。
@
@ @
@@@@@
@@@@@
@@@
@@@ @@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@
@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@
@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@
@@@ @@@@@@@@@@@@@
@@@
@@@@@
@@@@@
@ @
@
OK-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
より読みやすいコードへのリンク:
QBasic、222文字。それほど短くはありませんが、QBasicはかなり冗長な言語です。また、一見正しいバージョンに更新しました
FOR y=1 TO 23
FOR x=1 TO 80
a=0:b=0
c=-2.5+(x/80)*3.5:d=-1+(y/23)*2
FOR i=0 TO 1000
IF a*a+b*b>=4 THEN GOTO E
t=a*a-b*b*c:b=2*a*b+d:a=t
NEXT
E:LOCATE y,x
IF a*a+b*b<4 THEN
?("@")
ELSE
?(" ")
END IF
NEXT
NEXT
出力は次の図のようになります。
SpecBAS 201
私はこれが古い質問であることを知っていますが、私たちはBASICプログラミングフォーラムでPerlinのascii brotで遊んでいます、そしてここに私のものがありますコード行:
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;}}
実装はまったく目立たない。ネイティブの複雑な時間を使用して何ができるかを見るだけです(悲しいかな、少し冗長です)。
リージョンを実行できるように、ゴルフが解かれてパラメーター化されている
#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}
出力:
1111112222233333333333333334444445567190 54444333322222222222 11111222233333333333333334444444555780 0765444433333222222222 11111222333333333333333344444445556799 1865544443333322222222 11112223333333333333333444444455561 6 7985554444333332222222 6 7985554444333332222222 111122333333333333333344444445566784 086555544333333222222 111222333333333333333444444556667797 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 111222333333333333333444444556667797 787665554433333222222 111122333333333333333344444445566784 086555544333333222222 11112223333333333333333444444455561 6 7985554444333332222222 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を提出するために実装したマンデルブロレンダラーです。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)
ここでの1 Pythonの開発者は、
しかし、本当に短いではないが、
かなりの上司である1行です。
ゴルフコード:
#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の複素数の内部処理を利用しているので、仮想ユニットを取得するために(Python 1~12$:;
の場合と同等の(-1)**0.5
)ことができます。そこループをループネストのための3つは、であり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,/:::,**'%$$$$#######""""""""!!!!!!!!!!!!
!!!!!!"""""""""""""""""""""""""""###########$$$$$%&&'),:,)'&%$$$#######""""""""!!!!!!!!!!!!!!
!!!!!!!!""""""""""""""""""""""""""###########$$$$%&'(.,,-*%%$#######"""""""!!!!!!!!!!!!!!!!!
*