首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >词->城市天际线

词->城市天际线
EN

Code Golf用户
提问于 2016-09-18 18:52:46
回答 2查看 1K关注 0票数 41

挑战

您的程序或函数将接受来自STDIN的单个字符串输入或函数参数。您可以假设输入只包含字母字符(A)、空格和句号。输入是不区分大小写的,所以你应该像对待'A‘一样对待'a’。

对于字符串中的每个字符,您将按照以下规范输出建筑物的表示形式。

每栋建筑都必须有一个屋顶,在顶线上用下划线指定,然后在第二行上有斜线、空格、反斜杠。

代码语言:javascript
复制
 _
/ \

然后,您将有若干层,与字母编号(a=1,b=2,c=3等)相匹配。它由两边的墙(X)和中间的空间来表示。底层(只有底层)应该有一个基础,它是墙之间的下划线。像这样..。

代码语言:javascript
复制
|_|

例如,“b”应该是这样的

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

现在,我们知道,非常高,狭窄的建筑物不能站立,必须在基础上变宽,所以没有一些额外的支撑,任何建筑物都不能站在三层以上。因此,每三个级别(不少于),你应该增加一个‘加宽层’。加宽层由一个斜线和反斜杠组成,它直接在下面的部分的墙壁上,下面的部分应该比上面的部分宽两个空间。额外的一层不包括在建筑物的高度上。

建筑物不应重叠,但两者之间不应有任何不必要的空间,而且地面总是平坦的,所以所有建筑物的基础都应该在同一层。

例如,'abcdefga‘将看起来像这样。

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

字符串输入中的空格应用双空格表示。

字符串输入中的全部停止应该用像这样的碎石表示。

代码语言:javascript
复制
/\/\

进一步的示例

Input = Hello world.

产出=

代码语言:javascript
复制
                                                   _                                                  
                                                  / \                                                 
                                                  | |                                                 
                                                  | |                                                 
                                                  | |                                                 
                                                 /   \                                                
                                                 |   |                                                
                                                 |   |                       _                        
                                                 |   |                      / \                       
                                                /     \                     | |                       
                                                |     |                     | |                       
                                   _            |     |          _          | |                       
                                  / \           |     |         / \        /   \                      
                                  | |          /       \        | |        |   |                      
                                  | |          |       |        | |        |   |                      
                _        _        | |          |       |        | |        |   |        _             
               / \      / \      /   \         |       |       /   \      /     \      / \            
               | |      | |      |   |        /         \      |   |      |     |      | |            
               | |      | |      |   |        |         |      |   |      |     |      | |            
               | |      | |      |   |        |         |      |   |      |     |      | |            
   _          /   \    /   \    /     \       |         |     /     \    /       \    /   \           
  / \         |   |    |   |    |     |      /           \    |     |    |       |    |   |           
  | |         |   |    |   |    |     |      |           |    |     |    |       |    |   |           
  | |         |   |    |   |    |     |      |           |    |     |    |       |    |   |           
  | |    _   /     \  /     \  /       \     |           |   /       \  /         \  /     \          
 /   \  / \  |     |  |     |  |       |    /             \  |       |  |         |  |     |   _      
 |   |  | |  |     |  |     |  |       |    |             |  |       |  |         |  |     |  / \     
 |   |  | |  |     |  |     |  |       |    |             |  |       |  |         |  |     |  | |     
 |   |  | | /       \/       \/         \   |             | /         \/           \/       \ | |     
/     \/   \|       ||       ||         |  /               \|         ||           ||       | | |     
|     ||   ||       ||       ||         |  |               ||         ||           ||       |/   \    
|_____||___||_______||_______||_________|  |_______________||_________||___________||_______||___|/\/\

Input = lorem ipsum

代码语言:javascript
复制
                                                                                             _                  
                                                                                            / \                 
                                                                              _             | |                 
                                                                             / \            | |                 
                          _                                                  | |            | |                 
                         / \                                                 | |           /   \                
                         | |                                    _            | |           |   |                
                         | |                                   / \          /   \          |   |                
              _          | |                                   | |          |   |          |   |                
             / \        /   \                                  | |          |   |         /     \               
             | |        |   |              _                   | |          |   |         |     |         _     
             | |        |   |             / \                 /   \        /     \        |     |        / \    
    _        | |        |   |             | |                 |   |        |     |        |     |        | |    
   / \      /   \      /     \            | |                 |   |        |     |       /       \       | |    
   | |      |   |      |     |            | |                 |   |        |     |       |       |       | |    
   | |      |   |      |     |           /   \               /     \      /       \      |       |      /   \   
   | |      |   |      |     |           |   |        _      |     |      |       |      |       |      |   |   
  /   \    /     \    /       \          |   |       / \     |     |      |       |     /         \     |   |   
  |   |    |     |    |       |          |   |       | |     |     |      |       |     |         |     |   |   
  |   |    |     |    |       |         /     \      | |    /       \    /         \    |         |    /     \  
  |   |    |     |    |       |         |     |      | |    |       |    |         |    |         |    |     |  
 /     \  /       \  /         \   _    |     |     /   \   |       |    |         |   /           \   |     |  
 |     |  |       |  |         |  / \   |     |     |   |   |       |    |         |   |           |   |     |  
 |     |  |       |  |         |  | |  /       \    |   |  /         \  /           \  |           |  /       \ 
 |     |  |       |  |         |  | |  |       |    |   |  |         |  |           |  |           |  |       | 
/       \/         \/           \ | |  |       |   /     \ |         |  |           | /             \ |       | 
|       ||         ||           |/   \ |       |   |     | |         |  |           | |             | |       | 
|       ||         ||           ||   |/         \  |     |/           \/             \|             |/         \
|_______||_________||___________||___||_________|  |_____||___________||_____________||_____________||_________|

Input = a.a.a.x.x.x.a.a.a

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

规则

  • 当然,这是代码高尔夫,以字节为单位的最低得分获胜。
  • 适用标准漏洞规则
  • 允许输出之前或之后的任意数量的额外空行。
  • 您可以选择以一个字符串输出整个结果,或者将输出作为一个数组提供,其中每个元素表示一行输出,也可以发送到STDOUT。

Note

这是我第一次发到PPCG,所以请对我轻松一点。已经穿过沙箱了。任何负面意见或可能的改进,请张贴作为评论,我会尽我所能

EN

回答 2

Code Golf用户

发布于 2016-09-20 14:48:05

Haskell,289字节

代码语言:javascript
复制
c?l=c++l++c
c%s=("|"?(drop 2(r s)>>c)):s
g 46=["/\\"?""]
g 32=["  "]
g x="_"%h(mod x 32)
h 1=["/ \\"," _ "]
h x=(" "%h(x-1))!x
v!x|mod x 3/=1=v|z<-'/':r v++"\\"=z:map(" "?)v
r v=v!!0>>" "
f t|l<-map(g.fromEnum)t,m<-maximum(map length l)-1=unlines[l>>= \x->(x++cycle[r x])!!i|i<-[m,m-1..0]]
票数 2
EN

Code Golf用户

发布于 2016-09-20 19:42:38

Ruby,245

代码语言:javascript
复制
->s{a=['']*36
w=' '
s.chars{|c|a[u=0]+=c<?!?w*2:c<?/?"/\\"*2:(h=c.upcase.ord-64
1.upto(1+h+=(h-1)/3){|t|u=[u,l=1+2*((f=h-t)/4)].max
a[t]+=w*(a[0].size-a[t].size)+(f<-1?w:f<0??_:(f%4<1?[?/,?\\]:[?|]*2)*(w*l)).center(u+2)}
"|#{?_*u}|")}
a.reverse}

你想多多新行就允许多少,所以我冒昧地说。除此之外,该进程如下:

  1. 初始化输出数组a
  2. 对于每个字符:
    1. 如果是“”,添加到a[0]
    2. 如果是“.”,将/\/\添加到a[0]
    3. 否则:
      1. 计算高度(c.upcase.ord + (c.upcase.ord-1)/3)
      2. 对于a:中的每一行
        1. 用空格填充行。a[t]+=w*(a[0].size-a[t].size)
        2. 如果我们是h以上的一个,则以_为中心
        3. 否则的话,如果我们在高处,就把它放在中间
        4. 否则,如果我们低于高度,中心| |/ \的适当宽度(1+2*((h-t)/4),取决于if h-t%4==0
        5. 将正确宽度的"|___|"添加到a[0]

  3. 返回a.reverse

我敢打赌,如果我计算出避免reverse的数学,它一定会变小。

票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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