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



For example, the Sierpinski carpet of order   3   should look like this:

###########################
# ## ## ## ## ## ## ## ## #
###########################
###   ######   ######   ###
# #   # ## #   # ## #   # #
###   ######   ######   ###
###########################
# ## ## ## ## ## ## ## ## #
###########################
#########         #########
# ## ## #         # ## ## #
#########         #########
###   ###         ###   ###
# #   # #         # #   # #
###   ###         ###   ###
#########         #########
# ## ## #         # ## ## #
#########         #########
###########################
# ## ## ## ## ## ## ## ## #
###########################
###   ######   ######   ###
# #   # ## #   # ## #   # #
###   ######   ######   ###
###########################
# ## ## ## ## ## ## ## ## #
###########################

The use of the   #   character is not rigidly required for ASCII art.

The important requirement is the placement of whitespace and non-whitespace characters.



Related task

   Sierpinski triangle


SHOWBLOCKS
=LAMBDA(xs,
    IF(0 <> xs, "█", " ")
)
 
 
SIERPCARPET
=LAMBDA(n,
    APPLYN(n)(
        SIERPWEAVE
    )(1)
)
 
 
SIERPWEAVE
=LAMBDA(xs,
    LET(
        triple, REPLICATECOLS(3)(xs),
        gap, LAMBDA(x, IF(x, 0, 0))(xs),
        middle, APPENDCOLS(
            APPENDCOLS(xs)(gap)
        )(xs),
 
        APPENDROWS(
            APPENDROWS(triple)(middle)
        )(triple)
    )
)