首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找到斐波纳契模式

找到斐波纳契模式
EN

Code Golf用户
提问于 2018-05-15 20:59:32
回答 1查看 1.9K关注 0票数 16

您可能熟悉Fibonacci序列,其中前两个项是0, 1 (有时是1, 1),后面的每一个项都是前两个项的之和。一开始是这样的:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

有时,序列包含有我感兴趣的特定模式的数字:任意对相邻数字之间的差异与任何其他对相同。例如,在以0, 1开头的序列中,第18个术语是9879-8=18-7=1.我有点满意。

挑战

给定两个初始值F(0)F(1),输出符合以下条件的F(n) = F(n-1) + F(n-2)生成的序列中的每个数字:

  • 任意一对相邻数字之间的差异与任何其他对相同。
  • 它至少有三位长(1和2位数字对这种模式不感兴趣)

输入

  • 两个小于10**10 (100亿)的非负整数

输出

  • 所有小于10**10且符合“挑战”部分标准的整数
  • 输出数字大于10**10是可以接受的,但这不是要求。
  • 如果重复的数字符合模式(例如777),则有可能存在满足条件的无限数,但程序不需要永远输出。
  • 如果不存在这样的整数,只要它不是一个数字,就输出您想要的任何内容(无、空、空数组、错误消息、悲伤脸等)。
  • 如果一个与模式匹配的数字在序列中出现不止一次,您可以输出它一次,或者输出它发生的次数。
  • 如果任何输入符合标准,则应将其包括在输出中。

规则

示例/测试用例

代码语言:javascript
复制
Input , Output   
[1,10] , []   

[0,1] , [987]   
[2,1] , [123]   
[2,3] , [987]   

[61,86] , [147]   
[75,90] , [420]   
[34,74] , [1234]   
[59,81] , [2468]   
[84,85] , [7531]   

[19,46] , [111]   
[60,81] , [222]   
[41,42] , [333]   
[13,81] , [444]   
[31,50] , [555]   
[15,42] , [666]   
[94,99] , [777]   
[72,66] , [888]  
[3189,826] , [888888888]    

[15,3] , [159,258]   
[22,51] , [321,1357]   
[74,85] , [159,4444]   
[27,31] , [147,11111]   

[123,0] , [123,123,123,246,369]   
[111,0] , [111,111,111,222,333,555,888]
[111,222] , [111,222,333,555,888]      

[33345,692] , [987654321]   
[3894621507,5981921703] , [9876543210]
[765432099,111111111] , [111111111,876543210,987654321]   

[1976,123] , [123, 2222, 4321, 6543, 45678]   
EN

回答 1

Code Golf用户

发布于 2018-05-16 13:54:40

红宝石,79字节

代码语言:javascript
复制
->a,b{loop{a>99&&!(a.digits.each_cons(2).map{|a,b|a-b}|[])[1]&&p(a);a,b=b,a+b}}

在网上试试!

票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/164878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档