English Français Deutsch

Sierpinski Carpet

' Produce a graphical or ASCII-art representation of a Sierpinski carpet of order N.

function incarpet(x,y)
set a = x
set b = y
while floor(a)>0 and floor(b)>0
if floor(a mod 3) = 1 and floor(b mod 3) = 1
set a = -1
set b = -1
else
set a = a / 3
set b = b / 3
end if
end while
if a < 0
set result = "_"
else
set result = "#"
end if
end function

program carpet(n)
set d = pow(3,n)
set y = 0
while y < d
set x = 0
set result = " "
while x < d
set result = result . incarpet(x,y)
set x = x + 1
end while
echo result
set y = y + 1
end while
end program

run carpet(3)

Produce a graphical or ASCII-art representation of a Sierpinski carpet of order N.
###########################
#_##_##_##_##_##_##_##_##_#
###########################
###___######___######___###
#_#___#_##_#___#_##_#___#_#
###___######___######___###
###########################
#_##_##_##_##_##_##_##_##_#
###########################
#########_________#########
#_##_##_#_________#_##_##_#
#########_________#########
###___###_________###___###
#_#___#_#_________#_#___#_#
###___###_________###___###
#########_________#########
#_##_##_#_________#_##_##_#
#########_________#########
###########################
#_##_##_##_##_##_##_##_##_#
###########################
###___######___######___###
#_#___#_##_#___#_##_#___#_#
###___######___######___###
###########################
#_##_##_##_##_##_##_##_##_#
###########################