Sierpinski triangle/Graphical: Difference between revisions

Content added Content deleted
m (Added Sidef language)
m (→‎{{header|Sidef}}: code improvement: Array.to_png() now will automatically transform the self input to a fixed-width format)
Line 1,138: Line 1,138:


class Array {
class Array {
method to_png(scale=1) {
method to_png(scale=1, bgcolor='white', fgcolor='black') {


var gd = (
var gd = (
Line 1,145: Line 1,145:
);
);


var img = gd.new(self[0].len * scale, self.len * scale);
var width = self.max_by{.len}.len;
self.map!{|r| "%-#{width}s" % r};

var img = gd.new(width * scale, self.len * scale);


self.range.each { |i|
self.range.each { |i|
Line 1,153: Line 1,156:
loop {
loop {
if (row.sub!(/^(\s+)/); $1.len?) {
if (row.sub!(/^(\s+)/); $1.len?) {
img.fgcolor('black');
img.fgcolor(bgcolor);
img.line(scale * $1.len);
img.line(scale * $1.len);
} elsif (row.sub!(/^(\S+)/); $1.len?) {
} elsif (row.sub!(/^(\S+)/); $1.len?) {
img.fgcolor('red');
img.fgcolor(fgcolor);
img.line(scale * $1.len);
img.line(scale * $1.len);
} else { break }
} else { break }
Line 1,168: Line 1,171:


var triangle = sierpinski_triangle(8);
var triangle = sierpinski_triangle(8);
var raw_png = triangle.to_png;
var raw_png = triangle.to_png(bgcolor:'black', fgcolor:'red');


var file = %f'triangle.png';
var file = %f'triangle.png';