首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >近似塑性数

近似塑性数
EN

Code Golf用户
提问于 2017-06-16 03:25:55
回答 16查看 2.3K关注 0票数 25

挑战

塑性数是一个与黄金比率有关的数字,具有许多有趣的数学性质。因此,有许多方法可以用来计算数字。

为了精确地为这个挑战指定数字,我们将使用以下定义(尽管有许多等价的定义,而且只要定义相同,就可以使用任意定义):

塑料数是一个实数ρ,所以是ρ。

您的挑战是编写一个程序或函数,该程序或函数以整数x作为输入(x> 1),并生成与ρ近似的输出,这样x的值越大,输出就越接近ρ(最多只有有限多个例外;为此目的,保持相同的值算作“更接近”),对于任何正数δ,对程序都有一些输入x,从而产生在ρ的δ中的输出。

Clarifications

  • 如果通过一种方法输出字符串(例如,标准输出流),则可以用十进制(例如1.3247179572)格式化输出,或者将两个整数的比例设置为两个整数之间的/字符。
  • 如果在编程语言中输出为值(例如从函数返回),则必须是定点、浮点或rational类型。(特别是,您不能使用以符号形式存储数字的数据类型,除非它们仅用于保存两个整数的比率。因此,如果您正在使用Mathematica或类似的语言,则需要包含额外的代码来实际生成输出的数字。)
  • 您的答案必须在语言的假设变体中工作,在这种变体中,整数可以任意大,内存(包括堆栈)是无限的。您可能不会假设您的语言中的浮点算法是任意精确的,而是必须使用它的实际准确性(这意味着,只有在能够在运行时控制浮点数精度的语言中才能输出浮点数字)。
  • X可以有你想要的任何意思(只要增加它就能提供更准确的输出)。我想,大多数提交材料都会让它控制要产生的输出的数字数,或者程序用于收敛于塑料数字的算法的迭代次数,但其他含义是可以接受的。

Testcase

以下是塑料数字的前几位数字:

代码语言:javascript
运行
复制
1.32471795724474602596090885

更多的数字是可用的论OEIS

胜利条件

与通常的密码-高尔夫一样,以字节来衡量,更短的是更好的。但是,即使他们没有获胜,也可以随意发布答案,只要他们在现有的答案中添加了一些东西(例如,不同的语言,或者不同的算法)。

EN

回答 16

Code Golf用户

发布于 2017-06-16 03:46:00

Python 2,49字节

代码语言:javascript
运行
复制
n=x=input()
while n**3/x/x<n+x:n+=1
print n,'/',x

在网上试试!

其思想是将ρρ³=ρ+1表示为分数n/x,分母x是输入精度参数。我们用(n/x)³=n/x+1和明确的分母来得到n³=x²(x+n)

由于n中LHS的增长速度快于RHS,所以我们可以用n³≥x²(x+n)近似于等值点n。代码会对n进行计数,直到出现这种情况,从较小的x开始。

一个小字节保存是用将两边除以写n³/x²≥x+n (在while条件中为否定)。这是代码中的楼层划分,但小数部分的丢失是可以忽略不计的。

另一个相同长度的选项则将x作为分子:

Python 2,49字节

代码语言:javascript
运行
复制
n=x=input()
while x**3/n/n<n+x:n-=1
print x,'/',n

在网上试试!

票数 10
EN

Code Golf用户

发布于 2017-06-16 06:20:29

Mathematica,20字节

代码语言:javascript
运行
复制
#^3-#-1&~Root~1~N~#&

Root函数给出了多项式方程f[x] == 0的解。

解释

代码语言:javascript
运行
复制
#^3-#-1&~Root~1~N~#&
                   &  (* Function *)
#^3-#-1&              (* A pure-function polynomial, x^3-x-1 *)
        ~Root~1       (* Find the first root *)
               ~N~#   (* approximate to (input) digits *)

样例I/O

代码语言:javascript
运行
复制
In[1]:= f=#^3-#-1&~Root~1~N~#&;
        f[1]

Out[1]= 1.

In[2]:= f[9]

Out[2]= 1.32471796

In[3]:= f[100]

Out[3]= 1.324717957244746025960908854478097340734404056901733364534015050302827851245547594054699347981787280
票数 10
EN

Code Golf用户

发布于 2017-06-16 05:43:11

Mathematica,27字节

代码语言:javascript
运行
复制
x/.Solve[x^3==x+1>2,x]~N~#&

-来自Martin的1字节

-来自ovs的2个字节

输入

27

输出

{1.32471795724474602596090885}

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

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

复制
相关文章

相似问题

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