星期一迷你高尔夫:每周一发布(希望!)一系列简短的代码高尔夫挑战赛。
甲斐波那契样序列使用相同的方法,获得著名斐波纳契数列 ; 也就是说,每个数字F(n)通过将序列中的前两个数字相加(F(n)= F(n-1)+ F(n-2))或减去后两个数字(F (n)= F(n + 2)-F(n + 1))。主要区别在于这些序列可以以任意两个数字开头。这些序列的零索引是有争议的,但是现在,我们将使用以下规则:
- 类斐波那契数列中的第0个数字是小于前一个数字的最后一个数字。
例如,斐波那契序列可以写为1, 0, 1, 1, 2, 3, 5...
,因此序列中的第0个数字是lone 0
。
挑战
挑战的目标是编写一个采用三个整数的程序或函数,并且采用任何格式:
- A和B,这是两个用来开始生成序列的数字。
- N,要输出的结果序列的长度。
并从0开始输出序列的前N个数字。
细节
- A,B和N可以采用任何顺序和格式,只要它们在视觉上是分开的即可。如果您使用其他订单/格式,请指定它是什么。
- 您可以假设A,B和N始终为正整数。
- 您可以假定N不大于100,并且所得序列将不包含
x >= 2^31
。 - 如果A大于B,则B是序列中的第0个数字。
- 输出必须用空格,逗号和/或换行符分隔。
- 允许使用尾部空格或换行符,但不能使用尾部逗号。
测试用例
范例1:
8 13 10
从8 13
开始往后追溯,直到找到一个比前一个更大的数字,我们得到13 8 5 3 2 1 1 0 1
。因此,0
该序列中的第0个数字。从此开始,我们打印出0
了下9个成员:
0 1 1 2 3 5 8 13 21 34
范例2:
23 37 5
再次向后工作以找到第0个数字,我们找到37 23 14 9 5 4 1 3
。这次的第0个数字是1
,因此我们将其与接下来的4个成员一起打印出来:
1 4 5 9 14
范例3:
4 3 8
有了这个,我们就不必往后找零号了,因为3
它小于4
:
3 7 10 17 27 44 71 115
范例4:
29 47 11
结果:
1 3 4 7 11 18 29 47 76 123 199
计分
这是代码高尔夫球,因此以字节为单位的最短有效代码获胜。Tiebreaker转到先前发布的提交。下个星期一,9月28日将选择获胜者。祝您好运!
编辑:恭喜您的获胜者@Jakube,使用Pyth获得了惊人的23个字节!
[8, 13, 10]
)吗?