立方体
* * * *
拉格朗日计划
* * * *
立方体

画出7个大小从1号递增至7号的立方体,两个立方体之间用空行隔开。

用"╱"(U+2571)画斜线,用"│"(U+2502)画垂直线,用"─"(U+2500)画水平线,用"█"(U+2588)画顶点。

1号立方体如下(为便于显示,以下图形中的符号都换成了标准ASC字符):

  X----X
 /    /|
X----X |
|    | X
|    |/
X----X


7号立方体如下(为便于显示,以下图形中的符号都换成了标准ASC字符)

        X----------------------------X
       /                            /|
      /                            / |
     /                            /  |
    /                            /   |
   /                            /    |
  /                            /     |
 /                            /      |
X----------------------------X       |
|                            |       |
|                            |       |
|                            |       |
|                            |       |
|                            |       |
|                            |       |
|                            |       X
|                            |      /
|                            |     /
|                            |    /
|                            |   /
|                            |  /
|                            | /
|                            |/
X----------------------------X


本题难度:



解答

记i为立方体的尺寸,从上往下,每个立方体由如下七部分组成:

第一根水平线:共1行,由 空格$*i$+顶点+横线$*4i$+顶点 组成。

前两根水平线之间的部分:共i行,其中从上往下第j行(j从0开始)由 空格$*(i-j)$+斜线+空格$*4i$+斜线+空格$*(j+1)$+竖线 组成。

第二根水平线:共1行,由 顶点+横线$*4i$+顶点+空格$*i$+竖线 组成。

第二根水平线到右后顶点所在行之间的部分:共i-1行,每行都由 竖线+空格$*4i$+竖线+空格$*i$+竖线 组成。

右后顶点所在行:共1行,由 竖线+空格$*4i$+竖线+空格$*i$+顶点 组成。

右后顶点所在行到最后一根水平线之间的部分:共i行,其中从上往下第j行(j从0开始)由 竖线+空格$*4i$+竖线+空格$*(i-j)$+斜线 组成。

最后一根水平线:共1行,由 顶点+横线$*4i$+顶点 组成。

按此方式实现,并把其中多次出现的 顶点+横线$*4i$+顶点 和 竖线+空格$*4i$+竖线+空格$*i$ 再赋成变量进一步压缩长度。

最终代码只有两行。

代码长度:207字节 vs. 全站第一:143字节。

b,w,s,v=" █╱│"
for i in range(1,8):h,f=w+"─"*4*i+w,v+b*4*i+v+b*i;*map(print,[b*(i+1)+h]+[b*(i-j)+s+b*4*i+s+b*j+v for j in range(i)]+[h+b*i+v]+[f+v]*(i-1)+[f+w]+[f[:-1-j]+s for j in range(i)]+[h,""]),