近似Fransén-Robinson常数


9

给定一个输入n,输出的值Fransén-罗宾逊常数n数字的小数点后进行舍入。

规则

  • 您可以假设所有输入都是1到60之间的整数。
  • 您可能不存储任何相关值-必须计算常数,不能调用该常数。
  • 四舍五入必须符合以下条件:
    • 如果最后一位之后的数字小于5,则最后一位必须保持相同。
    • 如果最后一位之后的数字大于或等于5,则最后一位必须加1。
  • 您只能输出前n+1几位。
  • 有标准漏洞。

测试用例

>>> f(0)
3

>>> f(1)
2.8

>>> f(11)
2.80777024203

>>> f(50)
2.80777024202851936522150118655777293230808592093020

>>> f(59)
2.80777024202851936522150118655777293230808592093019829122005

>>> f(60)
2.807770242028519365221501186557772932308085920930198291220055

如果您不支持任意精度浮点数怎么办?
瑕疵的2016年

1
@flawr我想这门语言必须使用某种形式的字符串连接或类似形式。否则,它可能不是挑战的语言。
艾迪生·克伦普

太糟糕了,这基本上只能使我们对数字进行硬编码。PS:为什么不添加f(60)测试用例?这样,参与者就不必从外部获取它=)
更加模糊的

@flawr硬编码是由规则不允许2
艾迪克伦普

尾随零可以吗?
Mego

Answers:


7

Mathematica,44 39 36 25 UTF-8字节

  • --5字节归功于Sp3000
  • -3个字节,感谢kennytm
  • -11字节归功于senegrom

划掉44仍然是常规44!

N[∫1/x!{x,-1,∞},#+1]&

例:

f=N[∫1/x!{x,-1,∞},#+1]&
f[2]

输出2.81

说明

N[               , # + 1] 
  ∫1/x!{x,-1,∞}

第一步N是对其余的数字取数字,#精度为(第一个参数)+1精度。!(因子)达到您的期望。{x, -1, Infinity}设置(奇怪格式的)积分的界限。


我无法对此进行测试,因此我认为本轮正确吗?
艾迪生·克伦普

1
我检查了@VTCAKAVSMoACE n = 60,它正确舍入了。(61第一个数字是8)。您可以查看Wolfram的文档N
NoOneIsHere

Coolio。只是检查。
艾迪生·克伦普

您可能可以使用文字代替Infinity。我建议除以0,如果ComplexInfinity不是这样的话...
Sp3000

1
尝试N[∫1/x!{x,-1,∞},#+1]&在哪里Unicode-F74C; 𝕕在Mathematica中显示。(请注意,之前的空间&也是不必要的...)
senegrom
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.