挑战
您必须编写一个程序,以正整数n
作为输入,并输出n
包含n
第Fib#号作为子字符串的第Fibonacci号(在整个过程中简称为Fib#)。出于此挑战的目的,斐波那契序列以开头1
。
以下是一些示例,您可以将它们用作测试用例,或者用作阐明挑战的示例(对于后者,请在下面留下注释,说明您不清楚的地方)。
n=1
Fib#s: 1
^1 1st Fib# that contains a 1 (1st Fib#)
Output: 1
n=2
Fib#s: 1, 1
^1 ^2 2nd Fib# that contains a 1 (2nd Fib#)
Output: 1
n=3
Fib#s: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233
^1 ^2 ^3 3rd Fib# that contains a 2 (3rd Fib#)
Output: 233
n=4
Output: 233
n=5
Output: 6765
n=6
Output: 28657
n=7
Output: 1304969544928657
n=8
Output: 14472334024676221
n=9
Output: 23416728348467685
n=10
Fib#s: 1, ..., 34, 55, 89, ..., 63245986, 102334155, 165580141, ..., 2880067194370816120, 4660046610375530309
^1 ^2 ^3 ^10 10th Fib# that contains a 55 (10th Fib#)
Output: 4660046610375530309
与往常一样,这是code-golf,因此请尽可能减少字节数。
如果有什么令人困惑/不清楚的地方,请发表评论。
(此挑战基于我发布的另一个挑战:打印包含n的第n个素数)
@officialaimm我认为期望很高的数字是不合理的。我的解决方案最多可在TIO上工作
—
与Orjan约翰森
n=25
(输出有1186位数字),然后被杀死n=26
(在我自己的笔记本电脑上编译为3085位数字)。每当再fib(n)
获得一位数字时,难度似乎都会增加(正如人们期望的那样)。下一跳31在最终输出中具有12990位数。
是。大声笑!我的python解决方案在n> 6时卡住了,因为有一个递归函数在循环中被多次调用。:D
—
Officialaimm
@officialaimm哦,对了,直接用递归定义斐波那契时,指数爆炸是个问题。即使没有,您也可能很快达到Python的递归限制。
—
与Orjan约翰森
@Shaggy:这就是我的意思是一致的:当0是第0个斐波那契数字时,则1是第一个(“第1个”斐波那契数字)。
—
ShreevatsaR
n=5
测试用例,因为我只是犯了一个愚蠢的错误,我在其中写了一张支票,如果子字符串不止一次,则该支票要数多次。n=5
会因为...而赶上它55
。