挑战
编写一个程序,该程序采用11x11整数数组,并构建3D ASCII块构建,其中数组中的每个值表示在与数组位置匹配的坐标处的一列块的高度。负高度是“浮动”列-仅顶部块可见。
例
__________________
___ /\__\__\__\__\__\__\
3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /\__\ /\/\__\__\__\__\__\__\
2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /\/__/ /\/\/__/__/__/__/__/__/
2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /\/\__\ /\/\/\__\ /\/\/__/
1, 0, 0, 7,-7,-7,-7,-7, 7, 0, 0, \/\/\__\ /\/\/\/__/ /\/\/__/
0, 0, 0, 7,-7,-7,-7,-7, 7, 0, 0, \/\/__/ /\/\/\/\__\ /\/\/__/
0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, \/\__\ /\/\/\/\/__/ /\/\/__/
0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, \/__/ \/\/\/\/\__\_ \/\/__/
1, 0, 0, 4, 3, 2, 1, 0, 0, 0, 1, \/\/\/\/__/_\_ \/__/
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, ___ \/\/\/__/__/_\_ ___
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /\__\ \/\/__/__/__/_\ /\__\
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, \/\__\ \/__/__/__/__/ \/\__\
\/\__\_________ ______\/\__\
\/\__\__\__\__\ /\__\__\__\__\
\/__/__/__/__/ \/__/__/__/__/
输入值
输入将是一个由121个整数组成的列表,可以从stdin中读取(由您选择分隔符),也可以作为数组传入(可以是1D或2D)。
高度将在-11到11之间。
输出量
可以将生成的建筑物写入stdout,直接在屏幕上显示,或者以换行符分隔的字符串形式返回。
允许前导和尾随空格。
建筑规则
单个3D块的形状如下所示:
___
/\__\
\/__/
一个2x2x2的方块立方体看起来像这样:
______
/\__\__\
/\/\__\__\
\/\/__/__/
\/__/__/
当块重叠时,较高的块优先于较低的块,前面的块优先于后面的块,而左边的块优先于右边的块。唯一的特殊情况是,块的顶行绝对不能覆盖其后面的任何非空格字符。
可以通过从侧面查看2D表示来最好地解释列高。
HEIGHT: 1 2 3 -3 -2 -1
__ __
__ |__| |__| __
__ |__| |__| |__| __
|__| |__| |__| |__|
测试用例
如果您想在更多输入上尝试解决方案,我在这里整理了几个测试用例。
获奖
这是代码高尔夫球,因此最短的提交(以字节为单位)获胜。