require "bitmap" local bmp local function sierpinski_triangle(level, x, y, size) if level > 0 then local col = color.black bmp:triangle(x, y, x + size, y, x, y + size, col, 1) local size2 = size // 2 sierpinski_triangle(level - 1, x, y, size2) sierpinski_triangle(level - 1, x + size2, y, size2) sierpinski_triangle(level - 1, x, y + size2, size2) end end local size = 800 local level = 8 bmp = bitmap.of(size, size, color.white, "Sierpinski Triangle") sierpinski_triangle(level, 20, 20, size - 40) bmp:view()