Sierpinski triangle: Difference between revisions

Content deleted Content added
Simpler D code
→‎{{header|PostScript}}: cleaner version
Line 1,170: Line 1,170:
%%BoundingBox 0 0 300 300
%%BoundingBox 0 0 300 300


/s 1 3 sqrt div def
/f { 1 0 translate } def
/r { rotate } def
/l { 1 0 lineto f } def
/l { rlineto } def
/r { 120 rotate } def
/d { gsave 0 s moveto 150 r 0 1 l 120 r 0 1 l closepath fill grestore } def


/S { gsave dup 1 sub dup
/serp { gsave 3 1 roll translate .5 -.5 scale d 1 -1 scale
dup 1 sub dup 0 eq not {
0 eq { 0 0 moveto l r l fill }
90 120 360 {
{ .5 .5 scale f S S S } ifelse
grestore f r f pop
dup cos s mul exch sin s mul
} def
3 -1 roll serp
} for
} if pop
grestore
} def


300 300 scale 1 2 div 1 3 div translate
300 300 scale 0 1 12 div translate
d 1 setgray
0 0 6 serp


8 S pop
showpage
showpage
%%EOF
%%EOF