Print a layered cake
Python 2, 238 chars
i=input()
m=[&quot;+&quot;+&quot;-&quot;*(i*4+1)+&quot;+&quot;,&quot;|&quot;+&quot; &quot;*(i*4+1)+&quot;|&quot;]
for v in range(i,1,-1):
 m+=[&quot; &quot;*(i-v)*2+&quot;+&quot;+&quot;-&quot;*(v*4+1)+&quot;+&quot;,&quot; &quot;*(i-v+1)*2+&quot;|&quot;+&quot; &quot;*((v-1)*4+1)+&quot;|&quot;]
m.pop()
m+=[&quot; &quot;*(i-1)*2+&quot;|&quot;+&quot; &quot;*5+&quot;|&quot;,&quot; &quot;*(i-1)*2+&quot; _|_|_&quot;]
print'\n'.join(m[::-1])

The missing example of Cake 2:
   _|_|_
  |     |
+---------+
|         |
+---------+