【发布时间】:2015-05-07 00:51:21
【问题描述】:
您好,我正在尝试构建一个函数,它将遍历所有可能的数字序列并将序列传递给函数,如果它返回 true,则停止。
这里是标记:
function sequences($smallest, $biggest, $long, $func) {
$seq = array(); // Will have $long values
/*
* generates the sequence
*/
if (call_user_func($functions[$func])) {
return $seq;
} else {
//generate next sequence.
}
}
生成的序列将在$smallest整数到$biggest整数之间具有$long 唯一值,并且必须排序示例:
/* $long = 4; $smallest = 5, $biggest = 10;
*
* 5,6,7,8
* 5,6,7,9
* 5,6,7,10
* 5,6,8,9
* 5,6,8,10
* ...
* 7,8,9,10
*
*
* $long = 4; $smallest = 15, $biggest = 60;
*
* ...
* 15,41,49,56
* ...
* 37,39,53,60
* ...
*/
我一直无法理解它,到目前为止,我实现这一目标的唯一方法是随机生成数字,而不是每次都对数组进行排序。 这显然不是最好的方法。
其他编程语言也会很棒(c++、C#、js、java)。
注意事项
- 它不是里程表,不允许在序列中重复数字,每个索引的值可以大于9。
- 根据某些条件测试序列并返回 True 或 False 的函数,不管它做什么,实际问题是一个一个地生成序列而没有重复。
【问题讨论】:
-
想想里程表上的数字是如何变化的。
-
etc...什么时候停止? -
@scrowler 当所有可能性都完成或函数返回 true 时
-
@ShlomiHassid 当所有可能性都完成后意味着您在该示例中达到
9,9,9,9?函数何时返回 true?很模糊... -
@Barmar 它不是里程表,不允许在序列中重复数字,每个索引的值可以大于 9
标签: php number-sequence