Sierpinski triangle/Graphical: Difference between revisions
Content added Content deleted
(→{{header|Perl}}: adding PARI/GP script) |
m (→{{header|Sidef}}: much simpler code) |
||
Line 1,529: | Line 1,529: | ||
method to_png(scale=1, bgcolor='white', fgcolor='black') { |
method to_png(scale=1, bgcolor='white', fgcolor='black') { |
||
static gd = require('GD::Simple') |
|||
try { require('GD::Simple') } |
|||
catch { warn "GD::Simple is not installed!"; return } |
|||
); |
|||
var width = self.max_by{.len}.len |
var width = self.max_by{.len}.len |
||
self.map!{|r| "%-#{width}s" % r} |
self.map!{|r| "%-#{width}s" % r} |
||
Line 1,541: | Line 1,537: | ||
for i in ^self { |
for i in ^self { |
||
for j in RangeNum(i*scale, i*scale + scale) { |
for j in RangeNum(i*scale, i*scale + scale) { |
||
var row = self[i] |
|||
img.moveTo(0, j) |
img.moveTo(0, j) |
||
for line in (self[i].scan(/(\s+|\S+)/)) { |
|||
img.fgcolor(line.contains(/\S/) ? fgcolor : bgcolor) |
|||
while (len) { |
|||
img.line(scale * line.len) |
|||
var color = bgcolor |
|||
if (len == row.len) { |
|||
row.gsub!(/^\S+/) |
|||
color = fgcolor |
|||
} |
|||
img.fgcolor(color) |
|||
var p = len-row.len |
|||
len = row.len |
|||
img.line(scale * p) |
|||
} |
} |
||
} |
} |
||
Line 1,564: | Line 1,550: | ||
var triangle = sierpinski_triangle(8) |
var triangle = sierpinski_triangle(8) |
||
var raw_png = triangle.to_png(bgcolor:'black', fgcolor:'red') |
var raw_png = triangle.to_png(bgcolor:'black', fgcolor:'red') |
||
File('triangle.png').write(raw_png, :raw)</lang> |
|||
var file = %f'triangle.png' |
|||
var fh = file.open('>:raw') |
|||
fh.print(raw_png) |
|||
fh.close</lang> |
|||
=={{header|Tcl}}== |
=={{header|Tcl}}== |