Sierpinski triangle/Graphical: Difference between revisions

m
→‎{{header|Sidef}}: much simpler code
(→‎{{header|Perl}}: adding PARI/GP script)
m (→‎{{header|Sidef}}: much simpler code)
Line 1,529:
method to_png(scale=1, bgcolor='white', fgcolor='black') {
 
varstatic gd = require('GD::Simple')
try { require('GD::Simple') }
catch { warn "GD::Simple is not installed!"; return }
);
 
var width = self.max_by{.len}.len
self.map!{|r| "%-#{width}s" % r}
Line 1,541 ⟶ 1,537:
for i in ^self {
for j in RangeNum(i*scale, i*scale + scale) {
var row = self[i]
img.moveTo(0, j)
varfor lenline =in row(self[i].lenscan(/(\s+|\S+)/)) {
img.fgcolor(line.contains(/\S/) ? fgcolor : bgcolor)
while (len) {
rowimg.gsub!line(/^\s+/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 ⟶ 1,550:
var triangle = sierpinski_triangle(8)
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}}==
2,747

edits