首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上升和重置序列的第n项

上升和重置序列的第n项
EN

Code Golf用户
提问于 2017-01-22 14:32:36
回答 28查看 2.1K关注 0票数 37

(来自codingame.com的多人游戏(代码冲突)的挑战)

挑战

查找以下序列的第n项:1, 1, 2, 1, 2, 3, 1, 2, 3, 4...,或者更明显的是{1}, {1,2}, {1,2,3}, {1,2,3,4}...

序列由连接范围从1到x组成,从1开始,一直到无穷远。

规则/ IO

输入和输出可以是任何格式,只要它是可区分的。输入可以从任何适当的来源: STDIN,文件等.

输入可以是0-或1-索引,所选的索引必须在文章中提及。

您必须至少处理255个包含的结果(这意味着0索引的最大输入为32640)。如果你的语言支持的话,任何事情都必须处理。

这是code-golf,所以最短的字节计数获胜!

测试用例(基于0的索引)

代码语言:javascript
复制
0 -> 1
1 -> 1
5 -> 3
10 -> 1
59 -> 5
100 -> 10
1001 -> 12
EN

回答 28

Code Golf用户

回答已采纳

发布于 2017-01-22 14:55:50

05AB1E,5字节

程序是0索引的,代码:

代码语言:javascript
复制
ÌLL¹è

解释:

代码语言:javascript
复制
Ì       # Double increment the input
 LL     # List of list on the input
   ¹è   # Get nth element

使用CP-1252编码。在网上试试!

票数 6
EN

Code Golf用户

发布于 2017-01-22 15:29:29

果冻,5个字节,1-索引

代码语言:javascript
复制
RRF³ị

在网上试试!

解释:

代码语言:javascript
复制
                                      (Assume N = 4 for the examples)
R      Generate a list of 1 to N      [1, 2, 3, 4]
 R     Generate new lists for each item on the previous list, with that item as N
                                      [[1], [1,2], ...]
  F    Flatten that list              [1, 1, 2, 1, 2, 3 ...]
   ³ị  Use the input number (³) as index (ị) on the list. 
       This is one-based:             [1, 1, 2, 1, 2, 3 ...] 
                                                ^
票数 9
EN

Code Golf用户

发布于 2017-01-22 18:05:04

倍频程,39字节

代码语言:javascript
复制
@(z)z-(n=ceil((8*z+1)^.5/2-.5))*(n-1)/2

1-基指数

解释:

考虑以下顺序:

代码语言:javascript
复制
1   1   2   1   2   3   1   2   3   4   1   2   3   4   5

如果我们计算子序列的元素数

代码语言:javascript
复制
1   2        3          4               5         

因此,使用三角数的高斯公式,我们可以为z形成一个公式:

代码语言:javascript
复制
z=n*(n+1)/2

这是一个二次方程,如果我们把它解成n,我们就有

代码语言:javascript
复制
n=(sqrt(8*z+1)-1)/2

在网上试试!

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

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

复制
相关文章

相似问题

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