首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >帮助建筑师将天际线形象化

帮助建筑师将天际线形象化
EN

Code Golf用户
提问于 2015-11-29 12:36:56
回答 1查看 1.4K关注 0票数 28

作为城市规划项目的一部分,您得到了创建一个程序或功能的任务,该程序或函数将显示城市的天际线,给出一些建筑师的意见。这个项目只是在启动阶段,所以一个非常粗略的草图就足够了。当然,最简单的方法是在ASCII艺术中简单地画出天际线。

所有的建筑物都将在河边,因此它们都是对齐的。架构师将给出每栋建筑的高度作为输入,您的代码应该显示天际线。

架构师的输入要么是整数,要么是半整数。如果这个数字是一个整数,那么建筑物将有一个平坦的屋顶,而一个半整数将导致一个倾斜的屋顶。零将只是平坦的地面。一座建筑物的墙壁相隔三个字符,而零号则是一个字符宽。相邻的建筑物共用墙。

关于产出的细节和澄清,请看下面的例子:

代码语言:javascript
复制
N = 3
 ___
|   |
|   |
|___|

N = 3.5
  _      
 / \
|   |
|   |
|___|

N = 6
 ___
|   |
|   |
|   |
|   |
|   |
|___|

n = 0
_

示例输入:3 3.5 0 2

代码语言:javascript
复制
      _
 ___ / \  
|   |   |  ___
|   |   | |   |
|___|___|_|___|

示例输入:0 0 2.5 3 0 4 1

代码语言:javascript
复制
             ___
    _  ___  |   |
   / \|   | |   |
  |   |   | |   |___
__|___|___|_|___|___|

路易斯维尔0 2 1 3.5 0 4 2 4 2 4 6 1 6 0 5 1

代码语言:javascript
复制
                                    ___     ___
                                   |   |   |   |  ___
           _    ___     ___     ___|   |   |   | |   |
          / \  |   |   |   |   |   |   |   |   | |   |
  ___    |   | |   |___|   |___|   |   |   |   | |   |
 |   |___|   | |   |   |   |   |   |   |___|   | |   |___
_|___|___|___|_|___|___|___|___|___|___|___|___|_|___|___|

使用的ASCII字符是: newline、space和/\_| (代码点10、32、47、92、95、124)。

规则:

  • 它是可选的,使一个程序,只接受整数作为输入,通过乘以所有的数字二。因此,您的程序可以使用3 3.5 2,而不是6 7 4。如果选择第二种输入格式,则输入6将产生3层楼高的建筑,7层应是3层有倾斜屋顶的建筑等。
  • 输出应该与上面所描述的完全一样,但是尾随空格和换行符是可以的。
  • 输入的确切格式是可选的。用你的语言最好的东西。
  • 结果必须显示在屏幕上,以便架构师可以查看它。
  • 您可以假设至少有一个给定的整数,并且只会给出有效的输入。

这是codegolf,所以以字节为单位的最短代码赢了.

EN

回答 1

Code Golf用户

发布于 2015-11-29 14:26:02

C++,未高尔夫球的

(或者可能是不可信的)

假设有少于100个元素,并且每个元素都小于100个。s是建筑物的数量(在输入中需要)。

代码语言:javascript
复制
#include <iostream>
using namespace std;
int main()
{
float a[100];
int i,j,s;
cin>>s;
for(i=0;i<s;++i)
 cin>>a[i];
for(i=100;i>=1;--i)
{
for(j=0;j<s;++j)
{
if((a[j]>=i)||(a[j-1]>=i))
 cout<<"|";
else
 cout<<" ";
if(i==1)
 cout<<"___";
else if(a[j]+1==i)
 cout<<"___";
else if(a[j]+1.5==i)
 cout<<" _ ";
else if(a[j]+0.5==i)
 cout<<"/ \\";
else cout<<"   ";
}
if(a[s-1]>=i)
 cout<<"|";
cout<<endl;
}
}
票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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