BBC 베이직, 179
REV 1
INPUTn
z=FNt(500,470,0,0,3^n/9)END
DEFFNt(x,y,i,j,a)
LINEx-36*a,y-21*a,x+36*a,y-a*21PLOT85,x,y+a*42IFa FORj=-1TO1FORi=-1TO1z=FNt(x+24*a*i,y+j*14*a*(i*i*3-2),i,j,-j*a/3)NEXTNEXT
=0
이전과 같지만 흑백으로, 골프화되지 않은 (단순화 된) 골프 버전입니다. 이 방법을 사용하면 n = 1의 특별한 치료가 필요하지 않다는 사실에도 불구하고 승자는 아닙니다.
INPUTn
REM call function and throw return value away to z
z=FNt(500,470,0,0,3^n/9)
END
REM x,y=centre of triangle. a=scale.
REM loop variables i,j are only passed in order to make them local, not global.
DEFFNt(x,y,i,j,a)
REM first draw a line at the bottom of the triangle. PLOT85 then draws a filled triangle,
REM using the specified point (top of the triangle) and the last two points visited (those used to draw the line.)
LINEx-36*a,y-21*a,x+36*a,y-21*a
PLOT85,x,y+42*a
REM if the absolute magnitude of a is sufficient to be truthy, recurse to the next level.
REM j determines if the triangle will be upright, inverted or (if j=0) infinitely small.
REM i loops through the three triangles of each orientation, from left to right.
IFa FORj=-1TO1 FORi=-1TO1:z=FNt(x+24*a*i,y+j*14*a*(i*i*3-2),i,j,-j*a/3):NEXT:NEXT
REM return 0
=0
REV 0
@xnor에 대한 OP의 답변에 따르면 눈송이로 채워진 것은 괜찮습니다. 이 답변은 xnor의 의견에서 영감을 받았습니다. 색상은 재미를 위해 만들어졌으며 구성 방식을 보여줍니다. 삼각형 (이 경우 자홍색)을 취하고 밑면의 1/3 인 6 개의 삼각형으로 오버 플롯합니다.
INPUTn
z=FNt(500,470,n,1,0,0)
END
DEFFNt(x,y,n,o,i,a)
a=3^n/22
GCOLn
MOVEx-36*a,y-o*21*a
MOVEx+36*a,y-o*21*a
PLOT85,x,y+o*42*a
IFn>1FORi=-1TO1:z=FNt(x+24*a*i,y+14*a*(i*i*3-2),n-1,-1,i,a):z=FNt(x+24*a*i,y-14*a*(i*i*3-2),n-1,1,i,a)NEXT
=0