圣诞老人能够重新制造精灵过夜偷走的所有礼物!现在,他必须将它们发送到装配线进行包装。他通常有一个摄像头来监督装配线,既要确保精灵们做得很好,又要确保装配线的图片在广告海报上看起来不错[需要引用]
不幸的是,他的相机坏了,所以他希望您对装配线的外观进行模拟!
为了使装配线保持最高效率,并减少发生错误或故障的风险,所有现有的包装盒均具有相同的宽度,以使其完美地适合于输送带。
挑战
给定一个由其尺寸表示的礼物清单,输出带有所有礼物的传送带。
礼物是这样绘制的:
+----+
/ /|
+----+ |
| | +
| |/
+----+
该礼物的宽度为1,高度为2,长度为4。请注意,加号不计入边长,因此长度为4的礼物实际上横跨6个位置。
所有礼物都紧挨着绘制,最接近的两个字符之间有一个空格。也就是说,礼物的左下角之间的间距应使如果礼物盒具有长l
和宽w
,则下一个礼物盒的左下角将恰好l + w + 4
位于前一个箱子的左下角的右侧。
绘制完所有存在的盒子之后,通过用width + 2
下划线替换最后一行中每条盒子之间的空间来绘制传送带。
与礼品盒的最终输出(l, w, h)
的[(4, 1, 2), (8, 1, 3), (1, 1, 1)]
是:
+--------+
+----+ / /|
/ /| +--------+ | +-+
+----+ | | | | / /|
| | +_| | +_+-+ +
| |/__| |/__| |/
+----+___+--------+___+-+
格式化规格
您可以选择采用3元组的列表,其中一个元素在整个列表中是一致的(即宽度),也可以采用当前宽度,然后采用2元组的列表表示长度和每个礼物的高度。您可以以任何顺序和任何合理的格式接受输入,但是礼物的显示顺序必须与输入时的顺序相同。
您可以为ASCII艺术选择任何合理的输出格式(包括从函数返回)。
测试用例
这些测试用例以[(l, w, h), ...]
格式给出。
[(4, 1, 2), (8, 1, 3), (1, 1, 1)]:
+--------+
+----+ / /|
/ /| +--------+ | +-+
+----+ | | | | / /|
| | +_| | +_+-+ +
| |/__| |/__| |/
+----+___+--------+___+-+
[(5, 3, 4), (8, 3, 1), (1, 3, 7)]:
+-+
/ /|
/ / |
+-----+ / / |
/ /| +-+ |
/ / | | | |
/ / | +--------+ | | |
+-----+ | / /| | | |
| | +___/ / +_| | +
| | /___/ / /__| | /
| | /___+--------+ /___| | /
| |/____| |/____| |/
+-----+_____+--------+_____+-+
[(0, 0, 0)] (this is the most interesting test case ever :P)
++
+++
++
[(8, 3, 0), (0, 3, 8)] (more zero cases)
++
//|
// |
// |
++ |
|| |
|| |
|| |
+--------+ || |
/ /+_|| +
/ //__|| /
/ //___|| /
+--------+/____||/
+--------+_____++
规则
- 适用标准漏洞
- 这是代码高尔夫球,因此最短答案以字节为单位
- 没有答案将被接受
注意:我从Advent Of Code中汲取了灵感,来挑战这个系列。我没有与此网站的隶属关系
通过在此处查看第一个挑战的“链接”部分,可以查看该系列中所有挑战的列表。