กาแฟ377B 352B
ฉันรู้สึกสกปรกในการเขียน coffeescript แต่ฉันไม่สามารถหาแพ็คเกจการวาดที่เหมาะสมสำหรับ python3: - /
Q=(n)->X=(D=document).body.appendChild(C=D.createElement('Canvas')).getContext('2d');C.width=C.height=400;M=Math;T=[[175,400,50,i=0]];S=M.sin;C=M.cos;while [x,y,l,a]=T[i++]
X.save();X.translate x,y;X.rotate -a;X.fillRect 0,-l,l,l;X.restore();T.push [e=x-l*S(a),f=y-l*C(a),g=l*C(b=M.random()*M.PI/2),d=a+b],[e+g*C(d),f-g*S(d),l*S(b),d-M.PI/2] if i<2**n
Javascript 393B 385B
สวยกว่าเล็กน้อยใน javascript และฉันมีความสุขมากกับ for-loop แต่ไม่มี [x, y, z] = ไวยากรณ์ฉันไม่สามารถทำให้มันสั้นพอที่จะเอาชนะ coffeescript
function Q(n){X=(D=document).body.appendChild(C=D.createElement('Canvas')).getContext('2d');C.width=C.height=600;M=Math;T=[[275,400,50,i=0]];while(A=T[i++]){X.save();X.translate(x=A[0],y=A[1]);X.rotate(-(a=A[3]));X.fillRect(0,-(l=A[2]),l,l);X.restore();S=M.sin;C=M.cos;i<M.pow(2,n)&&T.push([e=x-l*S(a),f=y-l*C(a),g=l*C(b=M.random()*M.PI/2),d=a+b],[e+g*C(d),f-g*S(d),l*S(b),d-M.PI/2])}}
ต้องบอกว่าฉันได้รับการรวบรวมนิดหน่อยนี่เป็นเวลาเกือบสองเท่าของการแก้ปัญหาทางคณิตศาสตร์: - / เห็นมันทำงาน: http://jsfiddle.net/FK2NX/3/