递归二进制描述
最近,我对OEIS做出了第一个贡献,方法是将b文件扩展并添加到序列A049064中。该序列以开头0,然后通过给出最后一项的“二进制描述”来得出下一个值。
例如,第二项将是10,因为0第一个元素中有一个。第三项是1110,因为有一个1和一个0。第四个是11110。因为有三个(11二进制!) 1和一个0。以下是第五个术语的细目分类,以使该过程更加清晰:
> 11110
> 1111 0 (split into groups of each number)
> 4*1 1*0 (get count of each number in each group)
> 100*1 1*0 (convert counts to binary)
> 100110 (join each group back together)
这是一个从第六学期到第七学期的示例:
> 1110010110
> 111 00 1 0 11 0
> 3*1 2*0 1*1 1*0 2*1 1*0
> 11*1 10*0 1*1 1*0 10*1 1*0
> 111100111010110
您可以签出参考程序φI来计算这些项。
你的工作
您需要创建一个程序或函数,该程序或函数n通过标准输入或函数参数接收一个数字,并打印出该1st术语到该(n+1)th术语的序列,并用换行符分隔。如果您想查看较低的数字,可以参考OEIS页面中的b文件。但是,您的程序/功能应支持0 <= n <= 30,即直至31日。这是一项不小的壮举,因为δA049064(30)超过140,000位数长。如果您想知道第31个名词应该是什么,我已将其放在Pastebin上。
示例I / O
func(10)
0
10
1110
11110
100110
1110010110
111100111010110
100110011110111010110
1110010110010011011110111010110
1111001110101100111001011010011011110111010110
1001100111101110101100111100111010110111001011010011011110111010110
func(0)
0
func(3)
0
10
1110
11110
只有一个规则:没有标准漏洞!
这是 code-golf,因此最低字节数为准。
δ-万一您想知道,我对第100个学期的估计大约为3.28x10 250字符长,对于任何人来说,这都是很大的。
@Jakube不,您需要在其上进行字符串连接。
—
卡德,2015年
恭喜您为OEIS做出了贡献!
—
Alex A.
[0]\n[1, 0]\n[1, 1, 1, 0]\n...