It shouldn't be too hard to make this work.
By simply looking at the sequence of the pair-wise difference and ratio and correlating them to the original sequence or a constant, you can get good guesses for most commonly used sequences, if you just allow a few levels of recursion:
1, 2, 3, 4, 5
differences 1, 1, 1, 1 # constant
1, 2, 4, 8, 16
ratios: 2, 2, 2, 2 # constant
1, 2, 3, 5, 8
differences: 1, 2, 3, 5 # sames as original shifted by one
1, 11, 111, 1111, 11111
differences: 10, 100, 1000, 10000
ratios: 10, 10, 10 # constant
The fibonacci sequence is the only one example that needs autocorrelating. Other ones that could use the autocorrelation are -1, 1, -1, 1, ... and 0, 1, 0, 1, ....
In case of ambiguousness the solution with the shallowest recursion would win.
I'll try to come up with a prototype implementation that can be used as basis for a specification. But it won't be this or the next week, so have a little patience ;)
Ideally there would be some sub or method that can be overridden to detect sequences if the built-in mechanism fails..
|