【发布时间】:2014-01-25 03:41:31
【问题描述】:
在 10 个数字的排序列表中,我想找出是否有 5 个连续的数字在一定范围内。供参考:这称为寻找“stellium”(天文术语,关于行星的位置)。
如果列表是:
let iList = [15; 70; 72; 75; 80; 81; 120; 225; 250; 260]
我想要一个函数
let hasStellium iStellSize iStellRange iList
这将返回
hasStellium 5 20 iList = true
列表已经排序,所以我可以继续使用笨拙的 if-then 语句(例如“检查元素 1 和 5 是否相距小于 20 个单位,检查元素 2 和 6 是否满足条件”等。
let hasStellium iStellSize iStellRange iList=
if
iList.[iStellSize-1] - iList.[0] < iStellRange ||
iList.[iStellSize] - iList.[1] < iStellRange
then true
else false
但必须有一种更优雅的方式,它还允许其他 stellium 大小,而无需手动添加 if-then 行。
非常感谢您的帮助!
(如果函数可以返回群开始的索引号,那就更好了)
【问题讨论】: