首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >半指数函数

半指数函数
EN

Code Golf用户
提问于 2017-12-07 03:48:41
回答 2查看 1.8K关注 0票数 21

半指数函数是与自身组合时给出指数函数的函数。例如,如果是f(f(x)) = 2^x,那么f就是半指数函数.在这个挑战中,你将计算一个特定的半指数函数。

具体来说,您将使用以下属性计算从非负整数到非负整数的函数:

  • 单调增长:如果x < y,那么f(x) < f(y)
  • 至少半指数:对于所有的xf(f(x)) >= 2^x
  • 词汇学上最小的:在所有具有上述属性的函数中,输出最小化f(0)的函数,其中给定选择最小化f(1),然后输出f(2),等等。

对于输入0, 1, 2, ...,此函数的初始值为:

[1, 2, 3, 4, 8, 9, 10, 11, 16, 32, 64, 128, 129, 130, 131, 132, 256, 257, ...]

您可以通过下列任何方法输出此函数,无论是作为函数还是作为完整的程序:

  • x为输入,输出f(x)
  • x作为输入,输出f的第一个x值。
  • 无限输出所有f

如果要接受x和output f(x),则x必须为零索引。

参考实施

这是代码高尔夫-最短的字节获胜代码。标准漏洞和往常一样被禁止。

EN

回答 2

Code Golf用户

发布于 2017-12-07 05:22:55

Python 2,60字节

代码语言:javascript
运行
复制
d={};a=n=1
while 1:print a;a=d.get(n,a+1);d[1%n*a]=2**n;n+=1

在网上试试!

永远的指纹。

Python,61字节

代码语言:javascript
运行
复制
f=lambda n,i=2:n<1or(i>=n)*-~f(n-1)or(f(i)==n)<<i or f(n,i+1)

在网上试试!

一个函数。输出True代替1

票数 7
EN

Code Golf用户

发布于 2017-12-07 04:43:44

Python 2,111个字节

代码语言:javascript
运行
复制
def f(x):
 a=range(1,2**x)
 for i in range(1,x):a[i]=max(a[i],a[i-1]+1);a[a[i]]=max(a[a[i]],2**i)
 return a[:x]

在网上试试!

这是对user202729S回答的一个重大修改。我本想把这个改进作为评论发布,但是答案被删除了,所以评论被禁用了。

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

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

复制
相关文章

相似问题

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