一个 golang 的题,求个思路 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
petrichor08
V2EX    程序员

一个 golang 的题,求个思路

  •  
  •   petrichor08 2021-07-31 15:45:51 +08:00 2720 次点击
    这是一个创建于 1535 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用 Golang 实现一个方法 func checkList(list []int)(val int,ok bool),输入为一个整数数列(list []int),输出为预测改数列的下一个项的值 val 和是否找到规律 ok 比如 输入 []int{1,3,5,7,9} ,检测出它是等差数列,输出下一项的值 11 和找到了规律 true 输入数列的长度小于 3 时,作 无规律处理。比如:[1,3]判定无规律。[1,3,5]判定为等差数列 不用考虑 int 计算的溢出问题 需要支持的数列

    等差数列:递增和递减的等差数列都需要支持 比如 [3,5,7,9,11],最终返回 13 和 true 比如 [11,9,7,5,3],最终返回 1 和 true 等比数列: 比如 [2,4,8,16,32],最终返回 64 和 true 等比数列的公比可以为负整数,但不能为小数 比如 [32,16,8,4,2],返回 0 和 false 即可 比如 [2,-4,8,-16,32],需返回 -64 和 true 开方等差数列: 如果一个数列可以对每一项开根号(比如负数,则认为不可以开根号,再比如 3,开根号无法得到整数,也认为不可以开根号。开根号只取正值,比如根号 4=2,不能等于-2 )并且得到的新的整数数列是等差数列,那么他就是开方等差数列,比如 [1,4,9,16,25],最终返回 36 和 true 上述三种数列的任意组合,可以多层嵌套 比如 [2,15,41,80] 先求两两之差,得到等差数列 [13,26,39],最终返回 132 和 true 比如 [1,2,6,15,31] 先求两两之差,得到平方等差数列 [1,4,9,16],最终返回 56 和 true 比如 [1,1,3,15,105,945] 先求两两之商,得到等差数列[1,3,5,7,9],最终返回 10395 和 true 比如 [2,14,64,202,502,1062,2004],先求两两之差,得到 [12,50,138,300,560,942],再求两两之差,得到 [38,88,162,260,382],再求两两之差,得到等差数列[50,74,98,122],最终返回 3474 和 true 无规律:其他所有未检查出规律的数列,最终返回 0 和 false 当数列同时满足多种规律时,同一级之间按照 等差数列 > 等比数列 > 开方等差数列 的优先级来计算。比如 [1,1,2,6],可以先求差,得到 [0,1,4] 得到平方等差数列,预测的结果为 15 。也可以先求商得到 [1,2,3] 是等差数列,预测的结果为 24 。按照优先级规则,返回先求等差的结果。所以 输入 [1,1,2,6],输出应该为 15 。 
    2 条回复    2021-08-01 21:48:17 +08:00
    Zhuzhuchenyan
        1
    Zhuzhuchenyan  
       2021-07-31 16:20:14 +08:00
    看到这题感觉回到了大学。

    如果仅仅要求支持以上的几种形态的话,简单的做法就是定义等差,等比,开方等差的规则,然后判断当前数列不满足条件时,做差去递归求解就是了。别忘了加上最大递归层数的限制。后期如果增加需求加规则就好了。

    不想要仅仅如此的话可以看一下如何做一个求解器,举个现成的例子,你在 wolfram alpha 上直接搜索 1,3,5,7,9,他就会提示你这是个等差数列,并给出通项公式,网址: https://www.wolframalpha.com/input/?i=3%2C5%2C7%2C9%2C11

    最后,作业还是自己做吧。
    nowgoo
        2
    nowgoo  
       2021-08-01 21:48:17 +08:00
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1152 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 17:50 PVG 01:50 LAX 10:50 JFK 13:50
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86