首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >缓慢收敛的锯齿形

缓慢收敛的锯齿形
EN

Code Golf用户
提问于 2017-07-22 17:00:07
回答 14查看 1.3K关注 0票数 22

给定单个正整数作为输入,以这种形式返回一个收敛的zigzag字符串列表、字符列表或换行符分隔字符串:

代码语言:javascript
运行
复制
#
 #
  #
   #
    #
   #
  #
 #
  #
   #
  #

您可以用任何一致的非空格字符替换#。允许在每一行上使用尾随空格,并允许使用尾换行符。

zag从列1开始,每一行向右移动一列,直到到达n列(其中n是输入)。然后,它向左移动到2,然后向右移动到n-1,然后向左移动到3,两个界会聚到中间列((n+1)/2)的Z字形结束。

测试用例

上面的例子是5的测试用例。

以下是单个测试用例:

代码语言:javascript
运行
复制
3
#
 #
  #
 #
代码语言:javascript
运行
复制
7
#
 #
  #
   #
    #
     #
      #
     #
    #
   #
  #
 #
  #
   #
    #
     #
    #
   #
  #
   #
    #
   #
代码语言:javascript
运行
复制
1

#
EN

回答 14

Code Golf用户

发布于 2017-07-22 17:28:49

C (gcc),89字节

代码语言:javascript
运行
复制
f(n,a,b){puts("0");for(a=n;--a>n/2;)for(b=n-2*a;b<=2*a-n;)printf(" %*d\n",a-abs(b++),0);}

在网上试试!

通过分析(对于n=7)空间数的顺序来工作:

代码语言:javascript
运行
复制
          0
1 2 3 4 5 6 5 4 3 2 1
    2 3 4 5 4 3 2
        3 4 3

对于n=3:

代码语言:javascript
运行
复制
  0
1 2 1

我们可以看到中间数(代码中的a)从[n-1,n/2]运行。然后,第一个数字和中间数字之间的区别是:

代码语言:javascript
运行
复制
a  n  b  2a-n
-------------
6  7  5  5
5  7  3  3
4  7  1  1
2  3  1  1

所以,如果我们让b通过-( 2a-n ),2a-n,a-abs(b)会给我们想要的序列。这本质上就是代码所做的。

票数 15
EN

Code Golf用户

发布于 2017-07-22 18:38:00

Python 2,78字节

代码语言:javascript
运行
复制
l=range(1,input())
print 8
for i in l:
 for i in l:print' '*i+'8'
 l=l[-2::-1]

在网上试试!

票数 5
EN

Code Golf用户

发布于 2017-07-22 17:15:20

果冻,14字节

代码语言:javascript
运行
复制
ṖṖṚ$ÐĿẎ0;⁶ẋp1Y

在网上试试!

全程序。

使用1

1多亏了乔纳森·艾伦

1多亏了乔纳森·艾伦

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

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

复制
相关文章

相似问题

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