Jump to content

Sierpinski triangle/Graphical: Difference between revisions

m
Added Sidef language
m (Added Sidef language)
Line 1,125:
 
Original source: [http://seed7.sourceforge.net/algorith/graphic.htm#sierpinski]
 
=={{header|Sidef}}==
<lang ruby>func sierpinski_triangle(n) -> Array {
var triangle = ['*'];
{ |i|
var sp = (' ' * Math.pow(2, i-1));
triangle = (triangle.map {|x| sp + x + sp} +
triangle.map {|x| x + ' ' + x});
} * n;
triangle;
}
 
class Array {
method to_png(scale=1) {
 
var gd = (
try { require 'GD::Simple' }
catch { warn "GD::Simple is not installed!"; return };
);
 
var img = gd.new(self[0].len * scale, self.len * scale);
 
self.range.each { |i|
(i * scale) ..^ (i * scale + scale) -> each { |j|
var row = self[i];
img.moveTo(0, j);
loop {
if (row.sub!(/^(\s+)/); $1.len?) {
img.fgcolor('black');
img.line(scale * $1.len);
} elsif (row.sub!(/^(\S+)/); $1.len?) {
img.fgcolor('red');
img.line(scale * $1.len);
} else { break }
}
}
};
 
return img.png;
}
}
 
var triangle = sierpinski_triangle(8);
var raw_png = triangle.to_png;
 
var file = %f'triangle.png';
file.open('>:raw', \var fh, \var err)
|| die "Can't write to file '#{file}': #{err}";
fh.print(raw_png);
fh.close;</lang>
 
=={{header|Tcl}}==
2,747

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.