首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印一本小册子

打印一本小册子
EN

Code Golf用户
提问于 2017-08-06 23:38:58
回答 11查看 2.6K关注 0票数 40

阅读一本书是容易的,但印刷一本书可能有点棘手。打印小册子时,打印机需要以某种方式排列页面,以便从左到右阅读。这样做的方式是使用如下模式

代码语言:javascript
复制
n, 1, 2, n-1, n-2, 3, 4, n-3, n-4, 5, 6, n-5, n-6, 7, 8, n-7, n-8, 9, 10, n-9, n-10, 11, 12, n-11…

测试用例

4页小册子:4, 1, 2, 3

8页小册子:8,1,2,7,6,3,4,5

12页小册子:12,1,2,11,10,3,4,9,8,5,6,7

16页小册子:16,1,2,15,14,3,4,13,12,5,6,11,10,7,8,9

20页小册子:20,1,2,19,18,3,4,17,16,5,6,15,14,7,8,13,12,9,10,11

任务

您的任务是,给定整数n的倍数为4,显示一个数字数组,可用于打印n页面的书籍。

注意:只要输出生成正确的数字,无论是用空格、逗号、连字符还是括号分隔,任何获得解决方案的方法都可以使用。

这是一个密码-高尔夫问题,所以答案将以字节为单位得分,以最少的字节获胜。

EN

回答 11

Code Golf用户

发布于 2017-08-07 21:31:30

R,48字节(改进)

感谢@Giuseppe的-7字节!

代码语言:javascript
复制
n=scan();(x=order(1:n%%2))[order(-(n/2+.5-x)^2)]

诀窍是x=1:n;x[order(x%%2)]等同于order(1:n%%2)

在网上试试!

R,55个字节(原始)

Golfed

代码语言:javascript
复制
n=scan();x=1:n;x=x[order(x%%2)];x[order(-(n/2+.5-x)^2)]

未加注释

从stdin中读取n

代码语言:javascript
复制
n=scan()

x定义为从1到n的页面序列。

代码语言:javascript
复制
x=1:n

订购页面,所以即使页面在不均匀的页面之前。

代码语言:javascript
复制
x=x[order(x%%2)]

相对于由n/2+.5计算的书的中心,按降序顺序订购页。

代码语言:javascript
复制
x[order(-(n/2+.5-x)^2)]

示例有8页:

  • 中心4.5;
  • 第1页和第8页离中心最远,但第8页是第一位,因为8是偶数;
  • 第二页和第七页是离中心最远的第二页,但第二页是第一页,因为第二页是偶数;
  • 诸若此类。

在网上试试!

票数 3
EN

Code Golf用户

发布于 2017-08-07 15:10:35

Haskell,42字节

代码语言:javascript
复制
n#a|n<a=[]|x<-n-2=n:a:a+1:n-1:x#(a+2)
(#1)

在网上试试!

多一个字节:

Haskell,43字节

代码语言:javascript
复制
f n=[1,3..div n 2]>>= \x->[n-x+1,x,x+1,n-x]
票数 2
EN

Code Golf用户

发布于 2017-08-07 06:39:36

奇比,25字节

代码语言:javascript
复制
[1,:/2,2|?b-a+1,a,1+a,b-a

虽然输入是%4,但实际的节奏是基于2的.

解释

代码语言:javascript
复制
[1,:/2,2|   FOR ( b=1; b <= <input>/2; b=b+2)               
?           PRINT
 b-a+1,     n
 a,         1
 1+a,       2
 b-a        n-1
票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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