打一个超越性的数字


46

定义

  • 代数数是具有整数系数的非零多项式的零。例如,的平方根2是代数,因为它是的零x^2 - 2
  • 超越数是不是代数的实数。

任务

您将选择一个先验数字。

然后,编写一个使用正整数的程序/函数,并在所选先验数字的小数点后n输出第- n十进制数字。您必须在提交的文件中清楚说明使用了哪个先验编号。

您可以使用0索引或1索引。

e^2=7.389056098...是一个先验数字。对于此号码:

n output
1 3
2 8
3 9
4 0
5 5
6 6
7 0
8 9
9 8
...

请注意,首字母缩写7被忽略。

如前所述,您可以选择其他先验数字。

计分

这是。最低得分(以字节为单位)获胜。


不同的答案如何处理这样一个事实,即可以使用有限数量的整数作为参数?0是可接受的答案,因为存在一个先验数字,其第一个maxInteger数字为0
WNG

1
@WNG语言具有任意精度。没有maxinteger。
Leaky Nun

1
@WNG在没有任意大数字类型的语言中,您可以将输入索引视为字符串,而不是整数。
isaacg

Answers:


112

Python,3个字节

min

在线尝试!

接受数字字符串,将其最小数字输出为最小字符。例如,254给出2。这些数字的小数点开始

0.0123456789011111111101222222220123333333012344444401234555550123456666012345678801234567

这是OEIS A054054

索赔:这个数字c是先验的

证明: 请注意,c它非常稀疏:几乎所有数字都是零。那是因为large n,所以很有可能n是零数字,而min则是零。而且,c具有连续的零的长期运行。我们使用现有结果表明这意味着c先验。

遵循此math.SE问题,让Z(k)代表第k'个非零数字的位置c,并让c_k该非零数字成为1和之间的整数9。然后,我们表达的十进制扩展c,但只能取非零数字时,作为求和k=1,2,3,...c_k/10^Z(k)

我们使用乔治·洛瑟(George Lowther)给出的答案第4点的结果:c如果存在无限多个零,这些零至少是迄今为止位数的恒定分数,那么这就是超越的。形式上,必须有一个ε>0Z(k+1)/Z(k) > 1+ε为无限多k。我们将使用ε=1/9

对于任何数量的数字d,采取kZ(k) = 99...99d花枝招展。这样的k存在,因为这个数字的c9,等非零。从开始计数99...99,这些数字都包含一个零数字,因此它标志着长期零开始c。下一个非零数字要等到Z(k+1) = 1111...11有一个数字d+1。该比率Z(k+1)/Z(k)略大于1+1/9

这样就满足了每个条件d,暗示了结果。


我很高兴看到这个证明。
Leaky Nun

1
可以吗?min本身不接受任何输入,也不提供任何输出,这似乎是问题的要求。当然,它是整体上的关键功能,但是如果没有“在线尝试”中明显的生成器和打印语句,它就不会做任何事情。
桅杆

6
@Mast是的,问题是输出给定n的第n个数字,而不是生成小数。测试代码将显示数字顺序。而对包含函数文字在内的函数求值的表达式是有效的函数提交
xnor

1
令人愉快的:)))
Noodle9年

38

Pyth,1个字节

h

输入和输出是字符串。该函数采用索引的第一位数字。产生的先验数字如下:

0.0123456789111111111122222222223 ...

这是超验的,因为它是1/9一个数字,该数字的长度拉伸范围为零,至少为该数字的恒定分数。基于此math.stackexchange答案,这意味着该数字是超验的。

从数字100 ... 000到都有零的拉伸199 ... 999,因此Z(k+1)to的比率Z(k)通常是2无限大。

因此,上面的数字减1/9是先验的,因此上面的数字是先验的。


1
请注意,链接的M.SE帖子中提出问题不适用于该号码,但是George Lowther的答案的第4点适用。
Henning Makholm'17年

16

Python 2,19个字节

lambda n:1>>(n&~-n)

如果n2的幂,则第n 数字为1,否则为0

在线尝试!


3
我打算回答这个问题,但是我没有发现它超越的证据。是什么让您相信这个数字是超验的?n&~-n>0顺便说一句
orlp



@orlp我必须问OP布尔值是否合适。
丹尼斯


11

Brainfuck,2个字节

,.

与其他答案类似,返回第一个十进制数字,而忽略其余的十进制数字。



5

视网膜,4个字节

1!`.

返回输入数字的第一位数字。因为该端口很无聊,所以这里有一些其他端口:

O`.
1!`.

(8个字节)返回输入数字的最小位数。

.+
$*
+`^(11)+$
$#1$*
^1$

(25字节)如果输入数字为2的幂,则返回1。

.+
$*_

$.`
+1`.(\d*)_
$1
1!`.

(30个字节)Champernowne的常数。


4

Brachylog 2,7个字节

⟦₁c;?∋₎

在线尝试!

计算Champernowne常数的位数(由于索引问题,可能乘以10的幂,在这里显然无关紧要)。基本上,这只是将整数连接在一起,然后取第n个数字。


为什么需要⟦₁
Leaky Nun

@LeakyNun:因为否则我们将以0连接数字,而不能这样做,因为0123它不是数字(它有一个前导零,这不符合Brachylog的数字概念)。

4

Python 2,13个字节

输入和输出是字符串。

lambda n:n[0]

以十进制表示时,数字的第n个数字是n的最高有效数字。


4
您应该包括为什么这个数字是超验的。
orlp

2
@orlp看起来xnor的引用也可以很容易地在这里应用-从数字中减去1/9,然后无限地频繁地Z(n + 1)/ Z(n)〜= 2(在10 ^ x和2 * 10 ^ x之间) )。
feersum


3

JavaScript,51个字节

此函数计算nChampernowne常数的th位。f=在开始处添加并调用like f(arg)。请注意,该n索引为1索引。

n=>[..."1".repeat(n)].map((c,i)=>c*++i).join``[n-1]

说明

此函数接受单个参数n。然后,它创建一个n-characters long重复1的字符串。然后,它将String拆分为1s数组。之后,对Array的每个元素进行迭代,并将它们与Array中的索引乘以1相乘。然后,将Array通过""(空String)连接在一起以形成String。最后,它返回n获得的String 的th元素。

注意: 返回值的类型始终为String

测试片段

let f =

n=>[..."1".repeat(n)].map((c,i)=>c*++i).join``[n-1]

i.oninput = e => o.innerHTML = f(parseInt(e.target.value,10));
<input id=i><pre id=o></pre>



3

APL(Dyalog),3个字节

2|⍴

在线尝试!(测试套件会生成从1到的一系列数字10000,将它们转换为字符串,然后将训练2|⍴应用于它们)。

将输入数字作为字符串并返回其长度mod2。因此123=> 3 mod 2=> 1

该序列开始如下:

1  1  1  1  1  1  1  1  1  0  0  0  0  0  0  ...

所以可以这样概括: 9 1s 90 0s 900 1s ...

将该数字乘以9得到一个Liouville数,该被证明是超验的。


我认为这不一定是一个Liouville数-对我而言,n> 10并不很明显。但是,它确实适合这里其他人一直在使用的更强定理。
与Orjan约翰森

@ØrjanJohansen您可以将其表示为1 - 10^-9 + 10^-99 - 10^-999 + 10^-9999 - 10^-99999 + ...,所以它是一个Liouville数。
Leaky Nun

@LeakyNun连续指数的分数大约为10,但是要适应Wikipedia上的定义,它必须是无界的-这就是为什么原始Liouville常数的1索引使用阶乘而不是指数的原因。
与Orjan约翰森

3

Haskell,25个字节 17个字节

(!!)$concat$map show[1..]

Champernowne的常数可以是0或1,因为C10 * .01仍然是先验的。

编辑:根据nimis注释,您可以使用列表monad将其减少为

(!!)$show=<<[1..]

2
=<<monad的列表是concat.map(!!)$show=<<[1..]
nimi

2

JavaScript,73个字节

这是一个计算nLiouville常数的第一个数字的程序,其中n是通过调用函数gas 给出的输入数字g(arg)(且n为1索引)。请注意,代码中的换行符是必需的。

f=n=>n<1?1:n*f(n-1);g=(n,r=0)=>{for(i=0;i<=n;i++)if(f(i)==n)r=1
return r}

说明

该程序包含两个功能,fgf是递归阶乘计算函数,并且g是程序的主要功能。g 假设有一个参数n。它定义了一个默认参数r,值为0。然后,对所有Integer进行从0到I的迭代n,并在每次迭代中检查f应用于i(当前索引)的函数是否等于n,即乘数是否ni。如果确实如此,r则将的值设置为1。在函数末尾,将r返回。

测试片段

f=n=>n<1?1:n*f(n-1);g=(n,r=0)=>{for(i=0;i<=n;i++)if(f(i)==n)r=1
return r}

i.oninput = e => o.innerHTML = g(parseInt(e.target.value,10))
<input id=i><pre id=o></pre>

警告: 不要在代码段的输入框中输入太大的值!否则,您的设备可能会冻结!


1

Pyth,7 5 4字节

@jkS

在线尝试!

使用Champernowne常数。

感谢Leaky Nun,节省了2 3个字节。


1
我相信您可以使用它jk来替换sm`d
Leaky Nun

1
可以S代替使用Uh吗?
Leaky Nun

我认为它们在功能上是相同的,所以是的。我完全阅读了文档>。>
拍手

它们在功能上并不相同。S与启动1U开始使用0
Leaky Nun

您为什么要还原编辑?结果数字仍然是超验的。
Leaky Nun



1

木炭,24字节(无竞争)

NαAIUVN⟦UGPi⁺α¹⟧β§β⁺α›α⁰

在线尝试!

注:由于时间后,没有工作n,其中 n是14的正倍数。

说明

Nα                             Input number to a
   A                  β        Assign to b
     I                         Cast
       UVN                    Evaluate variable N
            ⟦UGPi⁺α¹⟧         With arguments GetVariable(Pi) and a+1
                        §β⁺α›α⁰ Print b[a+(a>0)]

GetVariable(Pi)?因此,没有π预定义的变量吗?
尼尔,

@Neil还没有,我不打算π等于pi,因为这是一种面向ASCII艺术的语言,而不是面向数学的语言

1

Japt3 1 + 1 = 2 1字节

feersum解决方案的另一个方面。

将输入作为字符串。

g

在线尝试


说明

   :Implicit input of string U
g  :The first character of the string

输入可以是字符串,所以您可以g输入1个字节:)
Oliver

挑战没有提到字符串输入@obarakon,因此我在JS端口中使用了整数,然后在这里使用了整数。
毛茸茸的

啊,知道了 许多其他答案使用字符串输入。但是您说的没错,OP在挑战中没有提到它。
奥利弗

1

TI-BASIC,16字节

基本上测试输入N(1索引)是否为三角数。这与返回N第一个数字0.1010010001…相同,这被证明是超验的。数字顺序为OEIS A010054

Input N
int(√(2N
2N=Ans(Ans+1

0

傅里叶,16个字节

I~NL~S10PS~XN/Xo

在线尝试!

其他答案完成后,输出输入的第一位数字。

代码说明:

N = User Input
S = log(N)
X = 10 ^ S
Print (N/X)

0

JavaScript(ES6)

只是一些其他解决方案的几个端口


feersum的Python解决方案,12个字节

n=>(""+n)[0]


Dennis的Python解决方案,13个字节

n=>1>>(n&--n)


xnor的Python解决方案,20字节

n=>Math.min(...""+n)



0

05AB1E3 1字节

编辑:使用其他答案中的证明,返回输入的第一位数

¬

1个索引,用于π(最多100000位)

žs¤

这个怎么运作

žs  # Implicit input. Gets n digits of pi (including 3 before decimal)
  ¤ # Get last digit

或者,如果您更喜欢e(仍为1索引)(最多10000位)

žt¤

在线尝试!


0

J,2个字节

其他所有人使用的相同解决方案:

{.

返回n的第一位数字。IO在弦上

Liouville的常数,9个字节

(=<.)!inv

1如果输入是整数的阶乘,则返回。

Pi,13字节

{:":<.@o.10x^

pi的最后一个非十进制数字乘以10 ^ n。





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.