\documentclass{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
input colorbrewer-rgb

vardef garland(expr level, shape) =
 if level = 0:
   fill shape withcolor filler; draw shape withpen pencircle scaled 1/8;
 else:
   save little_shape; path little_shape;
   little_shape = shape scaled factor;
   for i=1 upto length shape:
     garland(level - 1, little_shape shifted (point i of shape - point i of little_shape));
   endfor
 fi
enddef;
vardef sf(expr n) =
 numeric s; s = 0;
 for k=1 upto floor (n/4):
   s := s + cosd(360 / n * k);
 endfor
 1 / (2 * (1 + s))
enddef;
beginfig(1);
 color filler; numeric factor; path poly;
 for n=5 upto 9:
   filler := Reds[7][n-3]; factor := sf(n);
   poly := for i=1 upto n: 64 up rotated (360/n*i) -- endfor cycle;
   draw image(garland(3, poly)) shifted (144n, 0);
 endfor
 input show_name
endfig;
\end{mplibcode}
\end{document}