-1

我将如何在 C# 中以编程方式找出下一个以某种模式出现的数字?例如,如果我有一个模式(3、6、9、12),我将如何以编程方式计算出下一个数字是 15,然后是 21,等等?谢谢。

4

2 回答 2

2

好吧,首先您需要知道模式的类型或以编程方式弄清楚。线性数字模式通过加法或减法增加。指数模式通过乘法或除法增加。这样,您必须从第一个数字开始并确定差异。然后查看下一个数字,看看它是否增加了相同的数量。如果是这样,您就有了模式,只需将差值添加到最后一个数字即可。如果不是,它是一个指数函数,然后你需要确定它随着模式中的每个数字增加多少,以投影下一个。

没有看到代码,我只能向您展示概念。希望能帮助到你!您可能会发现很有用。

于 2013-02-22T01:09:22.497 回答
2

Dangit,我的响应因无线故障而丢失。让我再试一次:

您可以将其作为对 RPN 语言组合的广度优先搜索。从堆栈上的模式开始;忽略堆栈下溢,因为它们表明您处于序列种子中。使用基本运算符和个位数,在表达能力和不过度扩展搜索空间之间取得良好平衡。例如(显然,在搜索空间中只显示一些有趣的点):

for +:
3 +: Stack Underflow - ignore
3 6 +: 9
3 6 9 +: 15 - wrong

for *:
3 *: SU
3 6 *: 18 - wrong

for 1:
3 1: 1 - wrong

for + -:
3 + -: SU
3 6 + -: SU
3 6 9 + -: -12 - wrong

for 3 +:
3 3 +: 6
3 6 3 +: 9
3 6 9 3 +: 12
success
next:
3 6 9 12 3 +: 15
3 6 9 12 15 3 +: 18

这将为序列产生最简单的解释。正如 Samuel Edwin Ward 所指出的,据我们所知,可能有一个复杂的算法产生 4 作为下一个项目,或“香蕉”。例如,这里的许多人会立即“知道”这个序列中的下一个词:

1
2
"fizz"
4
?

(答案是,“显然”,,"buzz"即使该模式实际上并未在示例中展示,只是我们的经验。)

编辑:堆栈下溢,而不是溢出:/

于 2013-02-22T01:17:43.683 回答