首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ASCII-art中建立一个简单的房间

在ASCII-art中建立一个简单的房间
EN

Code Golf用户
提问于 2016-03-16 13:16:15
回答 1查看 990关注 0票数 15

房间可以由连通的长方形组成,例如L形状的房间.这样的房间可以用描述每个矩形大小的尺寸列表来描述。

假设您有两个输入列表。第一个包含彼此垂直叠加的矩形的宽度。第二个包含矩形的高度。

例如,输入的[4 6][3 2]将是6乘2矩形顶部的4乘3矩形.下图显示了这个形状。注意,墙壁被认为是“薄”的,因此墙之间的空间是由输入决定的。

代码语言:javascript
复制
[4 6][3 2]
 ____
|    |
|    |
|    |_
|      |
|______|

挑战是:以尺寸列表作为输入,输出房间的形状为ASCII-艺术。格式必须与抽样数字相同:

  • 所有水平墙都使用下划线显示。
  • 所有垂直墙都用条形图显示。
  • 在矩形连接的地方不应有墙。
  • 左边的墙是直的
  • 有关更多细节,请查看测试用例。

你可以做出以下假设:

  • 所有维度都在[1 ... 20] 的范围内。
    • 所有的水平维都是偶数。

  • 矩形数将在[1 ... 10]范围内。
  • 只提供有效的输入。
  • 可选的输入格式(您可以决定输入维度的顺序,请在答案中指定)。

测试用例:

代码语言:javascript
复制
[2][1]
 __
|__|

---

[4][2]
 ____
|    |
|____|

---

[2 6 2 4][2 2 1 3]
 __
|  |
|  |___
|      |
|   ___|
|  |_
|    |
|    |
|____|

---

[2 14 6 8 4 18 2 10 4 2][1 2 3 1 2 1 1 1 2 1]
 __
|  |___________
|              |
|       _______|
|      |
|      |
|      |_
|     ___|
|    |
|    |_____________
|   _______________|
|  |______
|     ____|
|    |
|   _|
|__|
EN

回答 1

Code Golf用户

发布于 2016-03-16 22:13:32

Ruby191

第一次打高尔夫球,这也是我第一天和Ruby在一起,所以这可能不是世界上最优雅的事情,但它可以吗?

代码语言:javascript
复制
def f(x)
a=x[0]+[0]
puts" #{'_'*a[0]} "
for i in 0..x[1].length-1
n,m=a[i,2].sort
puts"|#{' '*a[i]}|\n"*(x[1][i]-1)+'|'+' '*n+(a[i+1]<1?'_':m>a[i]?'|':' ')+'_'*(m-n-1)+(n<a[i]?'|':'')
end
end
票数 3
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/75626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档